Junior — Middle
Hogyan marad meg a Hof függőség, amelyet Singleton annotációval jelöltek, a Dagger függőség-injektálás keretében?
sobes.tech MI
Válasz az MI-től
A Dagger-ben a @Singleton annotáció garantálja, hogy a objektum csak egyszer lesz létrehozva a komponens (Component) keretein belül, és minden későbbi függőségi kérésnél újra felhasználásra kerül.
Hogyan működik:
- Amikor a Dagger komponens létrejön, belső cache-ében singleton példányokat tárol.
- Az első @Singleton annotációval ellátott függőségi kérésnél a Dagger létrehozza az objektumot és elmenti.
- A későbbi ugyanilyen típusú kérésnél a Dagger visszaadja a tárolt példányt, nem hoz létre újat.
Fontos, hogy a singleton hatóköre a komponensre korlátozódik. Ha több komponens van, mindegyik saját singleton példánnyal rendelkezhet.
Példa:
@Singleton
@Component
interface AppComponent {
MyService getMyService();
}
@Singleton
class MyService {
@Inject
MyService() {}
}
Itt a MyService egyszer lesz létrehozva az AppComponent szintjén, és újra felhasználásra kerül.