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.