使用参数和注入来实例化Spring原型bean
我需要实例化一个具有带参数和自动布线注入的多个构造函数的原型bean。
我从这里找到的解决方案开始实例化bean:带有运行时构造函数参数的Spring bean
Bean定义
public MyBean {
@Autowired
private MyService myService
public MyBean(int a1, String a21, String a22) {
}
public MyBean(int a1, String[] a2, int a3) {
}
public void exampleCallService(int value) {
myService.remoteMethod(value);
}
}
弹簧配置
@Configuration
public AppConfig {
@Bean("myBeanV1")
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public MyBean myBeanV1(int a1, String a21, String a22) {
return new MyBean(a1, a21, a22);
}
@Bean("myBeanV2")
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public MyBean myBeanV2(int a1, String[] a2, int a3) {
return new MyBean(a1, a2, a3);
}
}
测试类
@Component
public class ExampleTest {
@Autowired
private MyService myService
@Autowired
private BeanFactory beanFactory;
public String exampleMethod(){
MyBean myBean = (MyBean) beanFactory.getBean("myBeanV1", 1, "a", "b");
myService.remoteMethod(42); // OK
myBean.exampleCallService(42); // NPE
}
}
但是我的服务仍然没有被注入,当我尝试调用exampleCallService()
时,我得到了一个NPE。 可能是因为手动调用new MyBean()
。 我如何正确实例化这样的bean? 我使用的是Spring 3.0.7
上一篇: Instantiate Spring prototype bean with arguments and injections