Sobes.tech
Junior — Middle

Как се запазва зависимостта Hof, маркирана с анотация Singleton, в рамките на инжектирането на зависимости Dagger?

sobes.tech AI

Отговор от AI

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

Как работи:

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

Важно е обхватът на сингълтона да е ограничен до компонента. Ако има няколко компонента, всеки може да има свой собствен сингълтон екземпляр.

Пример:

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

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

Тук MyService ще бъде създаден веднъж на нивото на AppComponent и ще бъде повторно използван.