Sobes.tech
Назад к вопросам
Junior — Middle
68

Можете объяснить назначение аннотации @Singleton в Dagger и как она влияет на жизненный цикл объектов?

Ответ от нейросети

sobes.tech AI

Аннотация @Singleton в Dagger используется для указания, что компонент или провайдер должен создавать и предоставлять единственный экземпляр объекта на протяжении всего жизненного цикла компонента (например, приложения).

Это значит, что при использовании @Singleton Dagger гарантирует, что:

  • Объект создается один раз при первом запросе.
  • Все последующие запросы получают тот же самый экземпляр.

Таким образом, @Singleton влияет на жизненный цикл объектов, обеспечивая паттерн одиночки (singleton) в рамках компонента Dagger.

Пример использования:

@Singleton
@Component(modules = {AppModule.class})
public interface AppComponent {
    MyRepository getMyRepository();
}

@Module
public class AppModule {
    @Provides
    @Singleton
    MyRepository provideMyRepository() {
        return new MyRepository();
    }
}

В этом примере MyRepository будет создан один раз и переиспользован во всех местах, где он инжектится через AppComponent.

Важно помнить, что область действия @Singleton зависит от области компонента: если компонент живет долго (например, весь жизненный цикл приложения), то и синглтон будет жить долго.