具有动态构造函数值的Spring bean
我需要创建一个没有构造函数参数的不完整对象。像这样
Class A { private final int timeOut
public A(int timeout)
{
this.timeOut = timeout;
}
//...
}
我希望这个Bean是Spring管理的,以便以后可以使用Spring AOP。
<bean id="myBean" class="A" singleton="false"></bean>
但是我的bean需要将超时作为动态值传递-是否有一种方法可以创建在构造函数中注入了动态值的spring托管bean?
回答:
BeanFactory
有一个getBean(String name, Object... args)
方法,根据javadoc,它允许你指定构造函数参数,该参数用于覆盖bean定义自己的参数。因此,你可以将默认值放入bean文件中,然后在需要时指定“真实”运行时值,例如
<bean id="myBean" class="A" scope="prototype"> <constructor-arg value="0"/> <!-- dummy value -->
</bean>
接着:
getBean("myBean", myTimeoutValue);
我自己还没有尝试过,但是应该可以。
PS scope="prototype"
现在比优先使用singleton="false"
,后者已弃用的语法-更加明确,但功能相同。
以上是 具有动态构造函数值的Spring bean 的全部内容, 来源链接: utcz.com/qa/414235.html