Выбор ответа Middle DI: Hilt и Koin обновлено
Два биндинга одного типа
Вопрос
Нужны два OkHttpClient: обычный и с авторизацией. Как различить их в Hilt?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Квалификаторы: аннотации с @Qualifier или @Named на @Provides и при внедрении. Dagger различает биндинги по типу и квалификатору.
Варианты ответа
- Hilt сам выберет нужный клиент по имени параметра в конструкторе
- Квалификаторы: аннотации с
@Qualifierили@Namedна@Providesи при внедренииправильный ответ - Сделать один из клиентов
lateinitи инициализировать вручную после внедрения - Это невозможно в одном графе: второй клиент нужно вынести в отдельный модуль Gradle
Разбор
Dagger различает биндинги по типу и квалификатору. Объявляют @Qualifier annotation class AuthClient и ставят её на метод @Provides и на параметр, куда внедряется нужный клиент. Имена параметров Hilt не учитывает. Отдельный Gradle-модуль не нужен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.