Sobes.tech
Middle+

Quais são as principais diferenças entre as anotações SubComponents e Component no Dagger?

sobes.tech IA

Resposta da IA

@Component  
interface AppComponent {  
    // ...  
}  
  
@Subcomponent  
interface UserComponent {  
    // ...  
}  
  
// Exemplo de uso de Subcomponent em AppComponent  
@Component(modules = AppModules.class)  
interface AppComponent {  
    UserComponent userComponent(); // Adicionando um método de fábrica  
}  

Component:

  • Grafo de dependências auto-suficiente.
  • Pode ser um componente raiz ou uma dependência para outros componentes (usando dependencies).
  • Criado através de um método de fábrica (create() ou builder) numa interface anotada.

Subcomponent:

  • Estende o grafo do componente pai.
  • Tem acesso a todas as dependências fornecidas pelo componente pai.
  • Não possui suas próprias dependências (através de dependencies).
  • Criado pelo componente pai através de um método de fábrica.
  • Permite criar grafos mais modulares e geríveis.