Выбор ответа Middle DI: Hilt и Koin обновлено

Два биндинга одного типа

Вопрос

Нужны два OkHttpClient: обычный и с авторизацией. Как различить их в Hilt?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Квалификаторы: аннотации с @Qualifier или @Named на @Provides и при внедрении. Dagger различает биндинги по типу и квалификатору.

Варианты ответа

  1. Hilt сам выберет нужный клиент по имени параметра в конструкторе
  2. Квалификаторы: аннотации с @Qualifier или @Named на @Provides и при внедренииправильный ответ
  3. Сделать один из клиентов lateinit и инициализировать вручную после внедрения
  4. Это невозможно в одном графе: второй клиент нужно вынести в отдельный модуль Gradle

Разбор

Dagger различает биндинги по типу и квалификатору. Объявляют @Qualifier annotation class AuthClient и ставят её на метод @Provides и на параметр, куда внедряется нужный клиент. Имена параметров Hilt не учитывает. Отдельный Gradle-модуль не нужен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.