Sobes.tech
Junior — Middle

Como é que a dependência Hof, assinalada com a anotação Singleton, é mantida no âmbito da injeção de dependências do Dagger?

sobes.tech IA

Resposta da IA

No Dagger, a anotação @Singleton garante que o objeto será criado uma única vez dentro do componente (Component) e será reutilizado em todas as solicitações de dependência subsequentes.

Como funciona:

  • Quando o componente Dagger é criado, ele armazena instâncias singleton em seu cache interno.
  • Na primeira solicitação de dependência com a anotação @Singleton, o Dagger cria o objeto e o armazena.
  • Em solicitações subsequentes do mesmo tipo, o Dagger retorna a instância armazenada em vez de criar uma nova.

É importante que o escopo do singleton seja limitado ao componente. Se houver vários componentes, cada um pode ter sua própria instância singleton.

Exemplo:

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

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

Aqui, MyService será criado uma vez ao nível do AppComponent e será reutilizado.