В модулях моего корневого компонента я регулярно использую компоненты, чтобы возвращать / предоставлять отдельные графы объектов в моем контейнере. Каков наилучший способ инициировать графы компонентов / объектов с существующими зависимостями модулей?
Я чувствую, что должен использовать субкомпоненты здесь, но понятия не имею, как.Предпочтительно я хочу запустить компонент со всеми компонентами, которые доступны до этого момента.В настоящее время я передаю каждый экземпляр с помощью механизма Builder и @BindsInstance сборщику компонентов, что кажется довольно неловким, но я не знаю лучшего дизайна:
Root component
@Component(includes = TradeModule.class)
public interface RootComponent{
...
...
}
Мой модуль
@Module
public class TradeModule{
@Provides
@Singleton
//this is one example dependency that I want to inject in the component below
TimeframePermissionEvaluator timeframePermissionEvaluator() {
return new TimeframePermissionEvaluator();
}
@Provides
@Singleton
TradeModel tradeModel(TradeModelComponent.Builder builder, //assume builder is available
TimeframePermissionEvaluator tpe) {
return builder
//here I inject the dependency into the component. What's a more elegant
//way to do this? Imagine I have to inject hundreds of dependencies of TradeModule
.timeframePermissionEvaluator(tpe)
.build()
.createTradeModel();
}
}