Sobes.tech
Junior — Middle

Explique o princípio de funcionamento e a estrutura da biblioteca Dagger para injeção de dependências

sobes.tech IA

Resposta da IA

Dagger é uma biblioteca para injeção de dependências (Dependency Injection, DI) em aplicações Android e Java. Permite fornecer automaticamente os objetos necessários (dependências) nas classes, reduzindo o acoplamento e simplificando os testes.

Princípio de funcionamento:

  • Dagger usa anotações para descrever as dependências.
  • Na fase de compilação, é gerado código que cria e liga os objetos.
  • Isso garante alto desempenho e ausência de reflexão em tempo de execução.

Componentes principais:

  • @Module — classe que fornece dependências através de métodos anotados com @Provides.
  • @Component — interface que conecta módulos e pontos de injeção, criando um grafo de dependências.
  • @Inject — anotação que indica onde injetar a dependência (por exemplo, no construtor ou campo).

Exemplo:

@Module
class NetworkModule {
    @Provides
    Retrofit provideRetrofit() {
        return new Retrofit.Builder()
            .baseUrl("https://api.example.com")
            .build();
    }
}

@Component(modules = NetworkModule.class)
interface AppComponent {
    void inject(MainActivity activity);
}

public class MainActivity extends AppCompatActivity {
    @Inject
    Retrofit retrofit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DaggerAppComponent.create().inject(this);
        // Agora o retrofit está pronto para uso
    }
}

Assim, o Dagger ajuda a gerenciar as dependências de forma centralizada e eficiente, melhorando a arquitetura da aplicação.