Sobes.tech
Junior — Middle

Wie bleibt die Hof-Abhängigkeit, die mit der Singleton-Annotation gekennzeichnet ist, im Rahmen der Dependency Injection von Dagger erhalten?

sobes.tech KI

Antwort von AI

In Dagger garantiert die Annotation @Singleton, dass das Objekt innerhalb des Components (Component) nur einmal erstellt wird und bei allen nachfolgenden Abhängigkeitsanfragen wiederverwendet wird.

So funktioniert es:

  • Wenn das Dagger-Component erstellt wird, speichert es Singleton-Instanzen in seinem internen Cache.
  • Bei der ersten Abfrage einer Abhängigkeit mit der Annotation @Singleton erstellt Dagger das Objekt und speichert es.
  • Bei späteren Anfragen desselben Typs gibt Dagger die gespeicherte Instanz zurück, anstatt eine neue zu erstellen.

Wichtig ist, dass der Gültigkeitsbereich des Singletons auf das Component beschränkt ist. Wenn es mehrere Components gibt, kann jedes seine eigene Singleton-Instanz haben.

Beispiel:

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

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

Hier wird MyService einmal auf der Ebene des AppComponent erstellt und wiederverwendet.