我有一个具有某些 singleton 依赖项以及实例专有参数的bean。构造函数类似于:
@Autowired
public PrototypeBean(CustomAttribute attribute, Service1 service1, Service2 service2) {
[...some code...]
}
在上面的示例中,service1
和service2
是Singleton,Spring,依赖项,必须在创建bean时注入。
在另一个类上,我有一个ObjectProvider
,应该创建上面的原型bean的实例。我正在尝试这样的事情:
objectProvider.getObject(attribute);
但是Spring返回一个错误,指出找不到与参数匹配的构造函数。
我可以轻松地将代码从基于构造函数的注入更改为基于属性的注入,并且可以正常工作。但这不是一个好习惯,会使测试更难编写。
是否可以将ObjectProvider与同时具有自定义参数和依赖项的构造函数一起使用?
答案 0 :(得分:0)
您可以这样做:
@Configuration
static class PrototypeBeanConfiguration {
private final Service1 service1;
private final Service2 service2;
public PrototypeBeanConfiguration(Service1 service1, Service2 service2) {
this.service1 = service1;
this.service2 = service2;
}
@Bean
@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
public PrototypeBean(CustomAttribute attribute) {
return new PrototypeBean(attribute, service1, service2);
}
}