Junior — Middle
Kā Hof atkarība, kas ir atzīmēta ar anotāciju Singleton, tiek saglabāta Dagger atkarību injekcijas ietvaros?
sobes.tech AI
Atbilde no AI
Dagger gadījumā anotācija @Singleton garantē, ka objekts tiks izveidots tikai vienu reizi komponenta (Component) ietvaros un tiks atkārtoti izmantots visās turpmākajās atkarību pieprasījumos.
Kā tas darbojas:
- Kad tiek izveidots Dagger komponents, tas glabā singleton eksemplārus savā iekšējā kešatmiņā.
- Pirmās pieprasījuma ar anotāciju @Singleton gadījumā Dagger izveido objektu un to saglabā.
- Nākamajās pieprasījumos tā paša veida, Dagger atgriež saglabāto eksemplāru, nevis jaunu izveido.
Svarīgi, lai singletona darbības joma būtu ierobežota līdz komponentam. Ja ir vairāki komponenti, katrs varētu būt ar savu singleton eksemplāru.
Piemērs:
@Singleton
@Component
interface AppComponent {
MyService getMyService();
}
@Singleton
class MyService {
@Inject
MyService() {}
}
Šeit MyService tiks izveidots vienreiz AppComponent līmenī un tiks atkārtoti izmantots.