많은 개발자들이 지금까지 구글에서 Jetpack을 통해 제공하고 있는 의존성 주입 라이브러리 Dagger2를 사용해 왔다. 여러 장점에도 불구하고 높은 학습비용과 많은 보일러 플레이트 코드를 생성해야 하는 단점으로 적용하기에 불편했던 것이 사실이다. 이에 대해 구글에서는 최근 Hilt라는 라이브러리를 공개하였다.
@HiltAndroidApp
class RootApplication: Application() {
...
}
@Module
@InstallIn(ApplicationComponent::class)
object ApiModule {
@Singleton
@Provides
fun provideApiService(okHttpClient: OkHttpClient): ApiService {
...
}
@Singleton
@Provides
fun provideRepository(apiService: ApiService): Repository = ApiRepository(apiService)
}
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject
lateinit var repositoty: Repository
private val viewModel by viewModels<MainViewModel>()
...
}
class MainViewModel @ViewModelInject constructor(val repository: Repository): ViewModel() {
fun fetchImages(searchText: String) {
repository.fetchImages(searchText)
...
}
}