我是Spring框架的初学者,我在this教程之后通过setter应用DI。一切正常,但我想在我的类 CsvOutputGenerator 中添加一个带有一个动态参数的构造函数,当我从Application上下文中获取bean时动态传递。
我该怎么做?
我已经用这种方式改变了我的弹簧配置:
...
<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator">
<constructor-arg type="java.lang.String" value="Test"/>
</bean>
...
但是这样我的构造函数就是静态值。
答案 0 :(得分:2)
您可以通过系统属性传递它,例如
<constructor-arg lazy-init="true" type="java.lang.String" value="#{ systemProperties['some.key']}"/>
答案 1 :(得分:1)
尝试别的东西,即使Spring没有像这样使用(注意&#34;原型&#34;范围):
<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" scope="prototype" />
然后在您的代码中,您可以执行以下操作:
CsvOutputGenerator myBean = (CsvOutputGenerator) context.getBean("CsvOutputGenerator", "testing testing");
This是我在上面使用的API中的方法。
答案 2 :(得分:1)
以下内容基于上述问题和评论。 假设你有一个带有属性String url的类URLRepo。 url初始化为value。 然后你可以做这样的事情来连接你的CsvOutputGenerator
public class URLRepo {
private String url = "your value";
getters and setters
}
<bean id="urlRepo" class="com.*.*.MyURLRepo"/>
<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator">
<constructor-arg type="java.lang.String" value="urlRepo.url"/>
</bean>
希望这就是你要找的东西。