Dagger — это фреймворк для внедрения зависимостей (Dependency Injection - DI) в Java и Kotlin.
Используется в Android-разработке для:
Dagger работает во время компиляции, генерируя код, который выполняет внедрение зависимостей. Это приводит к более высокой производительности по сравнению с рефлексивными DI фреймворками.
Основные концепции Dagger:
@Module: Классы, предоставляющие зависимости. Методы, помеченные @Provides, возвращают экземпляры зависимостей.
kotlin
@Component: Интерфейсы, которые определяют граф зависимостей и предоставляют точки доступа для внедрения.
kotlin
@Inject: Аннотация используется для запроса зависимостей. Может быть применена к конструктору, полю или методу.
kotlin
@Scope: Аннотации, определяющие жизненный цикл предоставляемых объектов внутри компонента. Например, @Singleton.Dagger требует некоторой начальной настройки и изучения, но его преимущества в средних и крупных Android-приложениях оправдывают затраты.