Sobes.tech
Junior — Middle

Wyjaśnij zasadę działania i strukturę biblioteki Dagger do wstrzykiwania zależności

sobes.tech AI

Odpowiedź od AI

Dagger to biblioteka do wstrzykiwania zależności (Dependency Injection, DI) w aplikacjach Android i Java. Umożliwia automatyczne dostarczanie potrzebnych obiektów (zależności) do klas, zmniejszając powiązania i upraszczając testowanie.

Zasada działania:

  • Dagger używa adnotacji do opisywania zależności.
  • Na etapie kompilacji generowany jest kod, który tworzy i łączy obiekty.
  • Zapewnia to wysoką wydajność i brak refleksji podczas działania.

Główne komponenty:

  • @Module — klasa, która dostarcza zależności za pomocą metod oznaczonych @Provides.
  • @Component — interfejs łączący moduły i punkty wstrzykiwania, tworzący graf zależności.
  • @Inject — adnotacja wskazująca, gdzie wstrzyknąć zależność (np. w konstruktorze lub polu).

Przykład:

@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);
        // Teraz retrofit jest gotowy do użycia
    }
}

W ten sposób Dagger pomaga zarządzać zależnościami centralnie i efektywnie, poprawiając architekturę aplikacji.