2015-11-29 2 views
12

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

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

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

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

ответ

10

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

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

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

Я советую вам прочитать:

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

Смежные вопросы