Как добавить объект в Dagger

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

Ответ

В Dagger объект можно добавить через модуль (@Module) с помощью метода, аннотированного @Provides.

Пример:

@Module
class AppModule {
    @Provides
    fun provideSomeObject(): SomeObject {
        return SomeObject()
    }
}

Для внедрения через конструктор пометьте класс @Inject:

class SomeObject @Inject constructor()

Затем подключите модуль в компонент:

@Component(modules = [AppModule::class])
interface AppComponent

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

  • @Provides методы должны быть открытыми (public)
  • Тип возвращаемого значения определяет, что предоставляет метод
  • Для внедрения зависимостей используйте @Inject в месте, где нужен объект