Sobes.tech
Back to questions
Junior — Middle
77

Как Hof зависимость, отмеченная аннотацией Singleton, сохраняется в рамках внедрения зависимостей Dagger?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

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

Как это работает:

  • Когда компонент Dagger создаётся, он хранит синглтон-экземпляры в своём внутреннем кэше.
  • При первом запросе зависимости с аннотацией @Singleton Dagger создаёт объект и сохраняет его.
  • При последующих запросах того же типа Dagger возвращает сохранённый экземпляр, а не создаёт новый.

Важно, что область действия синглтона ограничена компонентом. Если есть несколько компонентов, каждый может иметь свой экземпляр синглтона.

Пример:

@Singleton
@Component
interface AppComponent {
    MyService getMyService();
}

@Singleton
class MyService {
    @Inject
    MyService() {}
}

Здесь MyService будет создан один раз на уровне AppComponent и переиспользован.