Какие знаешь библиотеки для работы с DI, помимо Dagger

«Какие знаешь библиотеки для работы с DI, помимо Dagger» — вопрос из категории DI, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Koin - легковесная библиотека для Kotlin, использует DSL и не требует кодогенерации. Пример:

val appModule = module {
    single { NetworkService() }
    factory { ViewModel(get()) }
}

Hilt - надстройка над Dagger от Google, упрощает настройку:

@HiltAndroidApp
class App : Application()

@Module
@InstallIn(SingletonComponent::class)
object AppModule {
    @Provides
    fun provideApi(): Api = Retrofit.Builder().build().create()
}

Kodein - еще одна Kotlin-библиотека с простым синтаксисом:

val kodein = Kodein {
    bind<Api>() with singleton { RetrofitApi() }
}

Также есть Toothpick, Feather и другие. Выбор зависит от проекта: Hilt для больших приложений, Koin для быстрого старта.