Какие знаешь основные компоненты в Dagger

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

Ответ

Dagger — это DI-фреймворк для Android. Основные компоненты:

  1. Модуль (@Module) — класс, предоставляющий зависимости через методы с @Provides.
  2. Компонент (@Component) — интерфейс, связывающий модули и инжектирующий зависимости.
  3. Зависимость (@Inject) — аннотация для полей/конструкторов, куда внедряются объекты.
  4. Область видимости (@Singleton и др.) — определяет жизненный цикл зависимости.

Пример:

@Module
class AppModule {
    @Provides
    fun provideApiService(): ApiService = RetrofitApiService()
}

@Component(modules = [AppModule::class])
interface AppComponent {
    fun inject(activity: MainActivity)
}

class MainActivity : AppCompatActivity() {
    @Inject lateinit var apiService: ApiService
    override fun onCreate() {
        DaggerAppComponent.create().inject(this)
    }
}