我正在研究Dagger 2框架,看看它是否对包含命令行提供的配置数据的独立应用程序有用。
我之前发现使用@Inject @Named("xxx") String s
使注入框架注入配置字符串非常有用,对于Dagger 1,可以使用@Module中的提供程序来完成,类似于:
@Provides @Named(XXX) String provideClassType(ConfigurationMap configurationMap) {
return configurationMap.get(XXX);
}
当我手动实例化Module时,configurationMap
传递给构造函数。显然这个机制发生了变化,所以Dagger自己实例化了模块,所以我无法传递配置图,就像我到目前为止所做的那样。我曾经想过在调用builder()方法之前设置一个静态字段来偷偷摸摸它,但它感觉不对(并且可能也不是线程安全的。)
这样做的正确方法是什么?
答案 0 :(得分:0)
在重新阅读文档之后,必须明确向构建器提供具有非默认构造函数的模块:
DaggerXXX_XXX.builder().myModule(new MyModule(new ConfigurationMap()).build()
(MyModule构造函数保存configurationMap字段的地方)