Sobes.tech
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.