Sobes.tech
Junior — Middle

Come viene mantenuta la dipendenza di Hof, contrassegnata con l'annotazione Singleton, nel contesto dell'iniezione delle dipendenze di Dagger?

sobes.tech AI

Risposta dell'AI

In Dagger, l'annotazione @Singleton garantisce che l'oggetto venga creato una sola volta all'interno del componente (Component) e venga riutilizzato in tutte le successive richieste di dipendenza.

Come funziona:

  • Quando il componente Dagger viene creato, memorizza le istanze singleton nel suo cache interno.
  • Alla prima richiesta di dipendenza con l'annotazione @Singleton, Dagger crea l'oggetto e lo memorizza.
  • Nelle richieste successive dello stesso tipo, Dagger restituisce l'istanza memorizzata invece di crearne una nuova.

È importante che l'ambito del singleton sia limitato al componente. Se ci sono più componenti, ognuno può avere la propria istanza singleton.

Esempio:

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

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

Qui, MyService verrà creato una volta a livello di AppComponent e riutilizzato.