#dependency-injection #dagger-2 #dependency-management #dagger
Вопрос:
Я использую Dagger2 для DI. Как мне сгруппировать классы в компонент?
Удовлетворяет ли Dagger зависимостям всех классов, определенных в одном интерфейсе @Component во время выполнения?
Например, если у меня есть следующий компонент:
@Component(modules = {ModuleA.class, ModuleB.class, ModuleC.class})
public interface Component {
ClassA getClassA();
ClassB getClassB();
ClassC getClassC();
}
Здесь ClassA, ClassB и ClassC имеют перекрывающиеся зависимости, но не совсем одинаковые.
Теперь, когда я звоню:
ClassA classA = DaggerComponent.create().getClassA();
Создает ли Dagger2 объекты, удовлетворяющие всем классам, присутствующим в Компоненте, или классы только для удовлетворения ClassA
?
Ответ №1:
Проанализировал файлы, созданные Dagger при сборке. На самом деле он создает объекты, необходимые только для ClassA, когда вызывается следующий оператор:
DaggerComponent.create().getClassA();