Запрос на инъекцию, основанный на модуле без компонента, немного похож на вопрос, можете ли вы поужинать, если у вас есть рецепт, но нет кухни.Модуль - это просто рецепт (конфигурация);Компонент делает все приготовления (создание).В этой аналогии сами реализации будут компонентами, которые Dagger готовит для вас по запросу.
Большая часть функциональности Dagger основана на реализации , которую Dagger создает на основе интерфейса вы аннотируете @Component
.Остальная часть кода Dagger обрабатывает ваши @Module
классы и ваши классы, которые используют @Inject
, так что Dagger может вызывать методы и конструкторы и устанавливать поля, но без @Component
ничто не вызовет эти вспомогательные классы.Таким образом, во всех случаях @Component
действительно необходим.
Тем не менее, пока у вас есть Компонент, у вас есть выбор разрешить ли Dagger создать свой класс - получитьэкземпляр из Dagger - или создать свой класс вручную и позволить Dagger заполнить его @Inject
членов позже.