Sobes.tech
Junior — Middle

Ako sa udrži závislosť Hof, označená anotáciou Singleton, v rámci injekcie závislostí Dagger?

sobes.tech AI

Odpoveď od AI

V Daggeri anotácia @Singleton zaručuje, že objekt bude vytvorený iba raz v rámci komponentu (Component) a bude znovu používaný pri všetkých nasledujúcich požiadavkách na závislosti.

Ako to funguje:

  • Keď sa vytvorí komponent Dagger, ukladá si singleton inštancie do svojho vnútorného cache.
  • Pri prvej požiadavke závislosti s anotáciou @Singleton Dagger vytvorí objekt a uloží ho.
  • Pri ďalších požiadavkách toho istého typu Dagger vráti uloženú inštanciu namiesto vytvorenia novej.

Dôležité je, že rozsah singletonu je obmedzený na komponent. Ak existuje viacero komponentov, každý môže mať svoju vlastnú singleton inštanciu.

Príklad:

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

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

Tu bude MyService vytvorený raz na úrovni AppComponent a bude znovu používaný.