如何为Dagger 2提供配置数据?

时间:2015-07-15 15:02:10

标签: java dagger-2

我正在研究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()方法之前设置一个静态字段来偷偷摸摸它,但它感觉不对(并且可能也不是线程安全的。)

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

在重新阅读文档之后,必须明确向构建器提供具有非默认构造函数的模块:

DaggerXXX_XXX.builder().myModule(new MyModule(new ConfigurationMap()).build()

(MyModule构造函数保存configurationMap字段的地方)