【发布时间】:2017-06-18 20:25:10
【问题描述】:
我是 Spring 新手,我想为模板 bean 编写一个 beanGenerator。我想使用这个生成器来克服线程安全问题。谁能帮我添加/修改代码以使其工作?描述我真正的问题有点困难,所以我将问题抽象为以下代码:
abstract class BeanDefinition {
abstract public void preprocess();
}
// now we have 1st user specific bean :
class UserSpecifiedBeanDefinition extends BeanDefinition{
@override
public void preprocess() {
// do something
}
}
// we could have more user-specific beans that extend BeanDefinition
....
// Following generator class is used to generate beans
public class BeanGenerator {
private BeanDefinition beanDefinition;
public BeanGenerator(BeanDefinition beanDefinition) {
this.beanDefinition = beanDefinition;
}
public generate() {
BeanDefinition newBean = // create new bean based on beanDefinition? how can I make this work??
newBean.preprocess();
return newBean;
}
}
// In spring.xml, I would like to use them like:
<bean id="generator1" class="com.xxx.xxx.BeanGenerator">
<constructor-arg name="beanDefinition" ref="userSpecifiedBeanDefinition"/>
</bean>
【问题讨论】:
-
你看过范围原型的bean吗?
-
@Thierry 是的,但我还没有想到在这种情况下使用原型范围的方法。你能多指点一下吗?在这种情况下,我有一个抽象的bean定义,以后用户会定义自己的具体bean定义,生成器会根据不同的具体定义生成bean。
标签: java spring inversion-of-control generator javabeans