Intereting Posts
Как обнаружить HTC Sense? Не удалось найти Library.apk! Eclipse: не позволит мне использовать Android SDK, ошибочно утверждает, что мой ADT устарел Как избежать повторной компоновки общей иерархии представлений при использовании EditText? Ошибка: JNI ERROR (ошибка приложения): доступ к устаревшей глобальной ссылке Ошибка при открытии не удалось: ошибка EACCES (Permission denied) при попытке записать данные на SD-карту в Android 5.1, почему? OnViewCreated – неправильное место для замены фрагмента? Библиотека ePub для java или android Можем ли мы рисовать линию в холсте андроида между двумя точками, заданными гироскопом? Согласовать параметры HTTP в URL с Android Intent Filters Поймать салфетки, чтобы отклонить событие Как отладить apk, подписанный для выпуска? SearchView развернуть / свернуть анимацию в Android Android WebView неправильно обрабатывает символы новой строки в предварительно отформатированном тексте Имущество должно быть инициализировано или абстрактно

Может ли кто-нибудь дать хорошее объяснение Кинжала 2?

Мне действительно трудно понять систему впрыска кинжала 2.

Я понимаю использование аннотации @Inject чтобы сказать @Inject что нам нужно предоставить экземпляр некоторого типа здесь.

Но я не понимаю различные роли других компонентов, таких как: @Module , @Component , @Provides и как они работают вместе, чтобы предоставить соответствующий экземпляр соответствующей зависимости.

Может кто-нибудь объяснить это просто и кратко?

Solutions Collecting From Web of "Может ли кто-нибудь дать хорошее объяснение Кинжала 2?"

@Module : Модули – это классы, методы которых предоставляют зависимости, поэтому мы определяем класс и аннотируем его с помощью @Module , поэтому Dagger будет знать, где найти зависимости, чтобы удовлетворить их при построении экземпляров класса. Одной из важных особенностей модулей является то, что они были разработаны для разделения и составления вместе (например, мы увидим, что в наших приложениях мы можем иметь несколько составных модулей).

Компонент : Компоненты в основном являются инжекторами, скажем, мостом между @Inject и @Module , который несет основную ответственность за объединение обоих. Они просто дают вам экземпляры всех типов, которые вы определили, например, мы должны аннотировать интерфейс с @Component и перечислить все @Modules, которые будут составлять этот компонент, и если какой-либо из них отсутствует, мы получаем ошибки во время компиляции. Все компоненты знают о масштабах зависимостей, которые он предоставляет через свои модули.

@Provide : Внутри модулей мы определяем методы, содержащие эту аннотацию, которая сообщает Кинжалу, как мы хотим построить и предоставить упомянутые зависимости.

Советую вам прочитать следующее:

  • Дегустационный кинжал 2 на Android от Fernando Cejas
  • Инъекция зависимостей с кинжалом 2 (Devoxx 2014) Джейком Уортоном
  • Инъекция зависимостей с кинжалом 2
  • Взаимодействие с кинжалом 2 – API by froger_mcs
  • Инъекция с помощью кинжала 2 – Пользовательские области применения froger_mcs

Думаю, это поможет понять.