Sobes.tech
Junior — Middle

Hoe wordt de Hof-afhankelijkheid, gemarkeerd met de Singleton-annotatie, behouden binnen de dependency-injectie van Dagger?

sobes.tech AI

Antwoord van AI

In Dagger garandeert de @Singleton-annotatie dat het object slechts één keer wordt gemaakt binnen de component (Component) en wordt hergebruikt bij alle volgende afhankelijkheidsverzoeken.

Hoe het werkt:

  • Wanneer de Dagger-component wordt gemaakt, slaat deze singleton-voorbeelden op in zijn interne cache.
  • Bij de eerste afhankelijkheidsaanvraag met de @Singleton-annotatie, maakt Dagger het object aan en slaat het op.
  • Bij latere aanvragen van hetzelfde type, geeft Dagger de opgeslagen instantie terug in plaats van een nieuwe te maken.

Het is belangrijk dat de scope van de singleton beperkt is tot de component. Als er meerdere componenten zijn, kan elk zijn eigen singleton-voorbeeld hebben.

Voorbeeld:

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

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

Hier wordt MyService één keer gemaakt op het niveau van AppComponent en hergebruikt.