【发布时间】:2012-11-06 01:08:07
【问题描述】:
我想创建一个将实例动态绑定到命名注释的模块。用例是我想自动将我的配置中的值与属性文件中的键绑定为@Named 值。
但是配置绑定在不同的模块中,所以我需要注入配置。我看过的解决方案是:
configure() 方法中的绑定。 该方法没有注入,无法获取基础配置。
使用提供者/@Provides。 提供者只绑定一个实例。
使用 MultiBinder。 我的用例与这个扩展提供的有点不同。多重绑定允许您分别绑定多个实例,然后将它们作为包含更复杂的 Collection 类型注入。我想分别绑定每个实例,并让它们通过唯一可识别的方式注入。
使用 childInjector。 不幸的是,如果不对现有代码进行一些广泛的修改,这是不可能的。 This answer 很好地描述了如何以这种方式解决这个问题。
以某种方式注入活页夹。 (我开始变得有点 hackier) Guice 允许注入 Injector 供以后使用,我尝试通过 @Provides 方法将 Binder 注入到模块中,然后直接使用 binder 在方法中进行多个绑定。 Guice 不会注入活页夹。
【问题讨论】:
标签: java dynamic configuration guice