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.