如何将多个模块依赖项注入Dagger-2组件中?

时间:2018-10-04 23:48:45

标签: java dependency-injection guice dagger-2

在我的根组件的模块中,我经常使用组件在容器内返回/提供单独的对象图。 用现有的模块依赖关系初始化组件/对象图的最佳方法是什么?
我觉得我应该在这里使用子组件,但是不知道如何使用。优选地,我想使用到目前为止所有可用的组件来启动该组件。当前,我通过Builder和@BindsInstance机制将每个实例传递给组件生成器,这看起来很尴尬,但是我不知道有一个更好的设计:

根组件

@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();
}
}

0 个答案:

没有答案