Ответ
При сборке проекта с Dagger генерируются реализации компонентов, модулей и фабрик на основе аннотаций (@Inject, @Provides и др.). Dagger использует APT (Annotation Processing Tool) для анализа кода и создания DI-графа во время компиляции.
Пример:
@Component(modules = [AppModule::class])
interface AppComponent {
fun inject(activity: MainActivity)
}
После Build Dagger сгенерирует DaggerAppComponent, который реализует AppComponent и содержит логику внедрения зависимостей.
Этапы:
- Анализ аннотаций – Dagger сканирует
@Component,@Module,@Inject. - Генерация кода – создаются классы типа
Dagger*Componentвbuild/generated/source/kapt. - Проверка графа – если зависимости нельзя разрешить, сборка упадёт с ошибкой (например,
MissingBinding).
Главное преимущество – ошибки DI обнаруживаются на этапе компиляции, а не в runtime.