【发布时间】:2012-03-22 12:15:58
【问题描述】:
是否有一种简单的方法可以将简单的原始类型参数(字符串和整数)注入到 bean 中?
我需要的是从 spring.xml 中找到类似这样的 guice:
<bean id="aBean" ...>
<property name="fieldName" value="aStringValue"/>
<property name="anotherFieldName" value="123"/>
</bean>
这些值可以是构造函数注入、字段注入或方法注入,但我不想为需要传递给 bean 的每个值使用单独的命名注释或工厂或提供程序。
编辑:我的解决方案
这就是我终于想到的。我认为它最接近我正在寻找的东西,但欢迎任何改进。
我发现在模块中,我可以声明一个提供者方法并使用它来设置我需要的任何属性:
MyModule extends AbstractModule{
...
@Provides @Named("testBean") MyTestBean createTestBean(MembersInjector<TestBean> mi){
TestBean test = new TestBean();
mi.injectMembers(test);
test.setFieldName("aStringValue");
test.setAnotherFieldName(123);
return test;
}
...
}
好处是,Provides 方法替换了 bean 的 bind(),这样实际行数不会增加太多。
我仍然不能 100% 确定任何副作用,但它看起来很有希望。
【问题讨论】:
-
你试过谷歌吗? (例如code.google.com/p/guice-xml-config)
-
如果我必须使用 xml 我宁愿不从 spring 迁移:)
-
嗯,“来自 spring.xml 的类似内容”听起来对我来说显然是 XML。也许如果您提到您不想要 XML?但在这种情况下还有什么?列表?好点了吗?
-
好吧 :) 让我换个方式问 - 你如何将字符串从 guice 模块传递给 bean?这是一项简单的任务,我想知道最简单的解决方案是什么