214 похожих чатов

Всем привет. У меня возник вопрос по внедрению зависимостей в

многомодульном проекте через dagger2, но сначала контекст: Разбираю пример из книги "dagger by tutorial". Там есть модуль, который предоставляет retrofit-класс. Этот модуль также предоставляет интерфейс конфигурации клиента (базовый url, размер кэша), который должен реализовать модуль, который будет использовать этот ретрофит-класс. В примере это :app модуль.
Так вот, в книге эта реализация внедрения конфигурации клиента сделана через атрибут dependencies ApplicationComponent. Плюс ко всему, для того, чтобы это решение заработало потребовалось добавить в функцию create Component.Factory реализацию этого интерфейса.
Автор не объясняет почему именно этот подход выбрал и мне он показался странным. Ведь можно убрать этот атрибут dependencies и добавить аннотацию @BindsInstance в Component.factory.create() и все также будет работать.
Сам вопрос - есть ли какая либо разница между добавлением обычного класса в граф зависимостей через dependencies и @bindsInstance?

15 ответов

20 просмотров

А новая книга? Есть вероятность, что на момент её написания в даггере ещё не было bindinstance

а, понял в чем вопрос. Думаю, что при использовании component dependenciesв граф добавляются все прописанные в этом компоненте биндинги, не нужно потом писать что-то типа networkConfiguration.okhttp. Вот здесь они хорошо описаны: https://dagger.dev/semantics/#:~:text=Component%20dependencies%20are%20simply%20syntactic%20sugar%20for%20a%20certain%20use%20case%20for%20bound%20instances.

Albert-Abdullin Автор вопроса
Alexey Illarionov
а, понял в чем вопрос. Думаю, что при использовани...

Я пытаюсь понять, но пока туго. Надо вникать мне, как всегда. Спасибо за ссылку

Albert Abdullin
Я пытаюсь понять, но пока туго. Надо вникать мне, ...

На скрине использование даггера не для android, а чистой java) для андроида класс App должен наследоваться от класса DaggerApplication

Юрий Лещенко
На скрине использование даггера не для android, а ...

не должен, DaggerApplication - это из мира dagger-android, он не обязателен, это один их подходов, который в целом был признан неудачным и переделан в hilt

Alexey Illarionov
не должен, DaggerApplication - это из мира dagger-...

Пруф об неудачности в студию? На таком подходе у нас куча проектов работает, включая и пос системы. Если люди не правильно его реализовывали это не значит неудачный подход, руки должны расти с плещей ))

Юрий Лещенко
Пруф об неудачности в студию? На таком подходе у н...

Здесь, например, разработчики рассказывали: https://youtu.be/o-ins1nvbDg?t=537 (ссылка из статьи Василия)

Alexey Illarionov
Здесь, например, разработчики рассказывали: https:...

Ну и так разберу статью по полкам 1.Статья 2019 года, когда пишут Даггер андроид мертв. Версия 2.47 вышла в прошлом мец 2. Автор пишет что разработчики DI хотели прийти к решению того что бы упростить новичкам его использование, и это не значит что он не удачен( упрощение его использование стоит в hilt) и то если начнем разбивать на компоненты в ручную у новичков думаю будут снова проблемы, я уже молчу про очистку ссылок про которые новички забывают, если их не чистить вам и хилт думаю не поможет с утечками памяти 3. Автор четко в статья подчеркивает что это его мнение, и много уважаемые его коллеги с ним не согласны.

Юрий Лещенко
Ну и так разберу статью по полкам 1.Статья 2019 го...

Версия даггера вышла, но ту часть, которая именно dagger-android же не развивают, она просто в режиме совместимости живет. А рекомендуют и разрабатывают хилт.

Я бы вообще не использовал DI фреймворки. В небольшом проекте уж точно.

А что ещё в MainActivity делать? Только DI и wiring. Ну можно в класс вынести.

Почему нет? Даггер живее всех живых, и много где используется, знать его полезно. Скорее всего в первую очередь хилт, чистый даггер сложен в управлении компонентами. Реальной пользы в пет проекте скорее всего будет мало, только для практики. Брать ли в большой продакшен - очень дело вкуса, кто-то любит даггер, кто-то коин, кто-то вообще без фреймворка делает зависимости.

Алексей Ершов
Версия даггера вышла, но ту часть, которая именно ...

https://javadoc.io/doc/com.google.dagger/dagger-android/latest/dagger/android/package-summary.html

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Блин, интересно, кто-нибудь когда-нибудь переписывал какую-нибудь игру с x86 на arm? Вообще, такое возможно?
Alan 🔝 Бэброу
12
I just installed it but how do I use it?
Talula
12
здравствуйте, у меня есть число шестнадцаттиричное, FFFB например, это -5, как мне в консоль вывести -5? мой самописный atoi преобразовывает -5 в 65531
Maxim Of course
7
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Карта сайта