假设我有这样的情况:
<bean id="sample" class="ComlicatedClass" scope="prototype">
<property name="someProperty" value="${propertyValue}"/>
</bean>
我希望能够以编程方式创建bean并在运行时为propertyValue
提供值(前面的伪代码):
appContext.getBean("sample", "propertyValue" => "value")
在某种程度上,我想创建“bean模板”而不是完全定义的bean。这在春天有可能吗?
编辑:
propertyValue
的值在运行时已知!没有办法将它定义为另一个bean。
答案 0 :(得分:0)
你为什么不这样做
Sample sample = appContext.getBean("sample");
sample.setSomeProperty(appContext.getBean("someOtherBean"));
答案 1 :(得分:0)
你看过Prototype scope了吗?
bean的非单例原型范围部署导致每次发出对该特定bean的请求时都会创建一个新的bean实例。也就是说,bean被注入另一个bean,或者通过对容器的getBean()方法调用来请求它。通常,对所有有状态bean使用原型范围,对无状态bean使用单例范围。
如果您使用@Scope,还有Java based container configuration注释。