Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 3

**** Зачем использовать Android Dependency Injection? ****

Вместо того, чтобы создавать экземпляры SharedPreferences, Базы данных, Сетевые библиотеки в нашей Деятельности каждый раз, мы предпочитаем создавать их экземпляры где-то еще и вставлять их в нашу Активность, когда это необходимо.

Что такое Dagger 2?

Dagger 2 - это среда для внедрения зависимостей Android во время компиляции.

Ниже приведены основные аннотации, используемые в Dagger 2:

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

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

@Inject: используется для конструктора, поля или метода и указывает, что была запрошена зависимость.

@Component: класс Module не предоставляет зависимости напрямую классу, который ее запрашивает. Для этого используется интерфейс Component, который действует как мост между @Module и @Inject.

@Singleton: это указывает, что будет создан только один экземпляр объекта зависимости.