Sobes.tech
Middle+

Dagger 1 ile Dagger 2 arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Dagger 2 ile Dagger 1 arasındaki temel fark, Dagger 2'nin kodu derleme aşamasında üretmesi, Dagger 1'in ise çalışma zamanında yansıma (reflection) kullanmasıdır.

Dagger 2'nin Dagger 1'e göre avantajları:

  • Performans: Yansımanın olmaması, çalışma zamanını daha hızlı yapar.
  • Hata ayıklama: Yapılandırma hataları derleme aşamasında görünür, çalışma zamanında değil.
  • Güvenilirlik: Üretilen kod daha öngörülebilir ve test edilebilir.
  • Gizli hataların olmaması: Yansıma, yalnızca belirli koşullarda ortaya çıkan hataları gizleyebilir.

Dagger 1'de @Module ve @Inject anotasyonları ile @ObjectGraph sınıfları kullanılırdı.

Dagger 2'de de @Module ve @Inject kullanılır, ancak ana mekanizma @Component'tir, bu fabrika gibi çalışır ve Dagger tarafından üretilir.

Dagger 1'de modül örneği:

// Dagger 1 Modülü
@Module(injects = MyActivity.class)
public class MyModule {

    @Provides
    public MyDependency provideMyDependency() {
        return new MyDependency();
    }
}

Dagger 2'de modül örneği:

// Dagger 2 Modülü
@Module
public class MyModule {

    @Provides
    public MyDependency provideMyDependency() {
        return new MyDependency();
    }
}

Dagger 2'de bileşen örneği:

// Dagger 2 Bileşeni
@Component(modules = MyModule.class)
public interface MyComponent {

    void inject(MyActivity activity);
}

Dagger 2'nin temel prensibi, modüller ve anotasyonlar kullanarak bağımlılık grafını tanımlamak, Dagger'ın bu grafı uygulayan sınıflar üretmesi ve böylece bağımlılık örneklerini alabilmektir. Bu, manuel fabrika yazımına benzer, ancak otomatik ve verimli bir şekilde yapılır.