gpt4 book ai didi

java - 如何使用 bean 定义对象在运行时生成/创建新的 spring bean?

转载 作者:行者123 更新时间:2023-12-02 12:50:07 25 4
gpt4 key购买 nike

我是 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>

最佳答案

我想你有一个没有参数的构造函数。使用反射实例化类

Class c = BeanGenerator.class.getClassLoader().loadClass(beanDefinition.getBeanClassName());
Constructor con = c.getConstructor();
Object instance = con.newInstance();

如果您有带参数的构造函数,则应更改逻辑以选择正确的构造函数并将参数传递给 newInstance() 调用

关于java - 如何使用 bean 定义对象在运行时生成/创建新的 spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com