Konuyu Açan #1
Giriş ve Temel Kavramlar

Dagger, Android ve Java projelerinde dependency injection (bağımlılık enjeksiyonu) sağlamak amacıyla kullanılan güçlü ve verimli bir kütüphanedir. Assisted injection ise, genellikle jenerik veya dinamik değerlerin, nesnelerin oluşturulması sırasında dışarıdan sağlanması gerektiğinde devreye girer. Yani, bazı bağımlılıkların Dagger tarafından otomatik enjekte edilmesi mümkünken, bazı parametrelerin çalışma zamanında sağlanması gerekir.

Neden Assisted Injection?

Örneğin, bir ViewModel veya Factory sınıfı tasarrufu yaparken, constructor parametreleri arasında runtime'da belirlenmesi gereken değerler varsa, assisted injection bu durumu kolaylaştırır. Bu durumda, Dagger hem bağımlılıkları enjekte eder hem de runtime parametrelerini sağlar.

Dagger assisted injection kullanımı

  1. @Assisted Anotasyonu: Bu anotasyon, constructor veya metod parametreleri üzerinde kullanılır ve o parametrenin çalışma zamanında belirlenmiş olduğunu belirtir. Bu parametreler, Dagger tarafından otomatik enjekte edilmek yerine, dışarıdan sağlanır.


  1. @AssistedFactory Arayüzü: Bu arayüz, assisted parametreleri içeren nesnelerin fabrika metodlarını tanımlar. Dagger, bu arayüzü implement eder ve runtime'da nesne oluşturmak için kullanılır.


  1. Örnek Uygulama:


  • Bir ViewModel veya başka bir sınıf düşünelim:


KOD
12345678910111213java
public class MyViewModel {
    private final Dependency dependency;
    private final String userId;

    @Inject
    public MyViewModel(Dependency dependency, @Assisted String userId) {
        this.dependency = dependency;
        this.userId = userId;
    }

    // Diğer metotlar
}


  • Factory arayüzü:


KOD
12345java
@AssistedFactory
public interface MyViewModelFactory {
    MyViewModel create(@Assisted String userId);
}


  • Dagger modülü ve kullanımı:


Dagger, factory'yi otomatik oluşturur ve çalışma zamanında:

KOD
1234java
// Factory kullanımı
MyViewModelFactory factory = daggerComponent.myViewModelFactory();
MyViewModel viewModel = factory.create("kullanici_id");


Bu yapı, runtime'da dinamik parametreleri enjekte etmek istediğinizde oldukça kullanışlıdır.

Sonuç ve Notlar

Assisted injection, özellikle dinamik veya değişken parametrelerin constructor veya factory'lerde gerektiği durumlarda devreye girer. Dagger ile birlikte kullanıldığında, kodun modülerliği ve test edilebilirliği artar. Ayrıca, assisted factory'leri sayesinde, nesne oluşturma sürecinde esneklik sağlar.

Assisted injection'ı projelerde kullanırken, doğru anotasyonların ve factory'lerin yapılandırılması kritik önemdedir. Bu sayede, bağımlılık yönetimi karmaşık hale gelmeden, dinamik parametrelerin yönetimi kolaylaşır ve kod okunabilirliği artar.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi