Sobes.tech
Junior — Middle

Jak zależność Hof, oznaczona adnotacją Singleton, jest zachowywana w ramach wstrzykiwania zależności Dagger?

sobes.tech AI

Odpowiedź od AI

W Daggerze adnotacja @Singleton gwarantuje, że obiekt zostanie utworzony tylko raz w ramach komponentu (Component) i będzie ponownie używany we wszystkich kolejnych żądaniach zależności.

Jak to działa:

  • Gdy tworzony jest komponent Dagger, przechowuje on instancje singleton w swoim wewnętrznym cache.
  • Przy pierwszym żądaniu zależności z adnotacją @Singleton, Dagger tworzy obiekt i go zapisuje.
  • Przy kolejnych żądaniach tego samego typu Dagger zwraca zapisany egzemplarz, a nie tworzy nowego.

Ważne jest, aby zakres singletona był ograniczony do komponentu. Jeśli istnieje wiele komponentów, każdy może mieć własny egzemplarz singletona.

Przykład:

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

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

Tutaj MyService zostanie utworzony raz na poziomie AppComponent i będzie ponownie używany.