Sobes.tech
Назад к вопросам
Junior — Middle
82

Можешь ли ты перечислить основные компоненты и концепции, используемые в Dagger для внедрения зависимостей?

Компании, где спрашивали
IBS

Ответ от нейросети

sobes.tech AI

Основные компоненты и концепции Dagger для внедрения зависимостей:

  • @Component — интерфейс, который связывает модули и места внедрения зависимостей. Он генерирует код для предоставления объектов.
  • @Module — класс, который содержит методы с аннотацией @Provides, описывающие, как создавать зависимости.
  • @Provides — аннотация для методов внутри модуля, которые возвращают объекты-зависимости.
  • @Inject — аннотация, которая указывает, куда нужно внедрять зависимости (конструкторы, поля, методы).
  • Scope — аннотации, например, @Singleton, которые определяют область жизни объектов.

Пример:

@Module
class NetworkModule {
    @Provides
    OkHttpClient provideOkHttpClient() {
        return new OkHttpClient();
    }
}

@Component(modules = NetworkModule.class)
interface AppComponent {
    void inject(MainActivity activity);
}

Dagger генерирует реализацию AppComponent, которая умеет создавать и внедрять зависимости, определённые в модулях.