Android Dagger Hilt (Dependency Injection)

Buğra Yetkin
2 min readJun 19, 2021

--

Bugün kullanımı basit olan dependency injection kütüphanesi olan dagger hilt’i örnek bir proje üzerinde göstermeye çalışacağım keyifli okumalar.

Özetle söylemek gerekirse,ihtiyacımız olan bağımlılıkları module olarak oluşturup kullanacağımız yerlerde ise inject ederek kullanabiliriz.ViewModel veya Repository gibi class’larımız için ayrıca module oluşturmamıza gerek yoktur.Bazı durumlarda context gerektiren class veya fonksiyonlar olabiliyor oluşturduğumuz module’e @ApplicationContext yardımıyla bu sorumluluğu verip yönetmesini sağlayabiliriz herhangi bir memory leak oluşturmayacaktır.

project gradle
app gradle plugin kısmı
app gradle

Normal class’lar da @Inject constructor olarak belirtmemiz yeterli viewModel’lar da ekstra olarak @HiltViewModel annotation’ı kullanıyoruz.Retrofit client veya database işlemleri için nesneleri @Module olarak oluşturarak @Inject ettiğimizde Hilt o nesneleri module’ler içerisinden bularak kullanımımıza sunuyor.

Oluşturduğumuz Obje’yi @Module annotation’ı ile Hilt module’ü olarak tanımlıyoruz ardından @InstallIn yardımıyla kullanacağımız kapsamı belirtiyoruz Activity Fragment Singleton .

by viewModels() androidx.activity ile kullanılabiliyor.

Bu kullanım bizi hem kod kalabalığından,zor yönetimden hem de refactor sürelerinde büyük ölçüde kolaylık sağlamış oluyor. Öncesinde bütün bağımlılıkları constructor’a paslamamız gerekiyordu artık daha temiz bir kod olmuş oluyor.

@AndroidEntryPoint Cannot create an instance of clas veya has no zero argument constructor hatası alıyorsanız bağımlılıkların inject (oluşturulacağını ) edileceğini belirtmediğinizden kaynaklıdır.

@Module → Hilt module’ü olacağını belirtiyoruz.

@InstallIn → Kullanacağımız kapsamı belirtiyoruz

@Provides → Module içerisinde provides ile tanımlanan fonksiyonları her zaman kullanacaktır.

@Singleton → Nesneye her ulaştığımızda hep aynı nesneyi verecektir bize sürekli yeniden create etmez .

@HiltAndroidApp → Gerekli bağımlılıkları oluşturmak için Hilt’i tetikler.

--

--

Buğra Yetkin
Buğra Yetkin

No responses yet