Sobes.tech
Junior — Middle

Kaip Hof priklausomybė, pažymėta anotacija Singleton, išlieka Dagger priklausomybių injekcijos kontekste?

sobes.tech AI

Atsakymas iš AI

Dagger'e, anotacija @Singleton garantuoja, kad objektas bus sukurtas tik vieną kartą komponento (Component) ribose ir bus pakartotinai naudojamas visuose vėlesniuose priklausomybių užklausose.

Kaip tai veikia:

  • Kai kuriamas Dagger komponentas, jis saugo singleton pavyzdžius savo vidiniame talpykloje.
  • Pirmą kartą užklausiant priklausomybę su anotacija @Singleton, Dagger sukuria objektą ir jį išsaugo.
  • Vėlesnėse užklausose to paties tipo, Dagger grąžina išsaugotą egzempliorių, o ne kuria naują.

Svarbu, kad singletono apimtis būtų apribota iki komponento. Jei yra keli komponentai, kiekvienas gali turėti savo singleton egzempliorių.

Pavyzdys:

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

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

Čia MyService bus sukurtas vieną kartą AppComponent lygyje ir bus pakartotinai naudojamas.