Что такое module в Dagger

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

Ответ

Модуль в Dagger — это класс, помеченный аннотацией @Module, который предоставляет зависимости (объекты) через методы с аннотацией @Provides. Модули группируют логику создания зависимостей и могут включать другие модули через @Module(includes = [...].

Пример:

@Module
class NetworkModule {
    @Provides
    fun provideOkHttpClient(): OkHttpClient {
        return OkHttpClient.Builder().build()
    }
}

Ключевые моменты:

  • Модули определяют, как создавать зависимости.
  • Могут зависеть от других модулей (includes).
  • Методы @Provides могут иметь параметры — Dagger автоматически внедрит их, если они доступны в графе зависимостей.