TGViewer
Android under the hood Android under the hood @android_under_the_hood · 1.53K subscribers
Post #19 698
Пару слов о базовой концепции Dagger.

Dagger - это DI библиотека, основанная на генерации кода. Самой базовой штукой в Dagger'е является компонент, который содержит в себе зависимости, такой компонент еще называют графом зависимостей:

class DaggerComponent {
    // фабрика, которая создаёт новый экземпляр зависимости при каждом вызове метода get
    private val dependency1 = provide { ... }
    // фабрика, которая создаёт новый экземпляр зависимости только при первом вызове метода get, можно сказать что это аналог делегата lazy
    private val dependency2 = singleton { ... }
    private val dependency3 = provide {
        Dependency3(dependency1, dependency2)
    }
}


Как вы видите зависимости в Dagger компоненте оборачиваются в специальные фабрики, это нужно для ограничения их жизненного цикла: одни зависимости живут в пределах Dagger компонента (Singleton аннотация), другие создаются каждый раз по требованию.

Dagger компонент - это и есть базовая концепция, на которой построена вся библиотека, остальное лишь дополнительные инструменты, которые:

1) указывают как создавать зависимости, например модули
2) указывают как можно сделать inject в классы, которые не находятся в Dagger компоненте, например Activity или Fragment
3) определяют отношения между разными компонентами, например зависимости от одного Dagger компонента передаются другому
4) дополняют всякими штуками, например аннотации IntoSet и IntoMap используются для создания коллекций зависимостей.

Более подробно про кодген Dagger'а можете почитать в моей статье на Github'е.

Пишите в комментах ваше мнение и всем хорошего кода!
  • ❤ 8
More from @android_under_the_hood
  1. Oct 4, 2026Всем привет, хочу поделиться проектом, который запустил 1 октября — ЗдесьЯ. Это цифровая с…
  2. Oct 2, 2026Kotlin lambdas, часть I. До версии Kotlin 2.0 лямбды компилировались в анонимные классы, р…
  3. Sep 27, 2026Делегат свойства в Kotlin. В Kotlin есть конструкция, которой нет в JVM: var name by NameD…
  4. Sep 23, 2026val vs var под капотом. На уровне Kotlin все просто: val x = 10 var y = 20 y = 30 // компи…
  5. Sep 20, 2026Возвращение Прошло уже полгода с последней записи на канале. За это время в моей жизни про…
  6. Feb 5, 2026Пару фактов о Go, часть II. 4) Вместо Kotlin Nullability указатели как в С/C++, то есть об…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →