[英]Spring Prototype bean with constructor argument and injected dependencies
我有一個 bean,它有一些單例依賴項,但也有實例專有參數。 構造函數是這樣的:
@Autowired
public PrototypeBean(CustomAttribute attribute, Service1 service1, Service2 service2) {
[...some code...]
}
在上面的例子中, service1
和service2
是單例、Spring、依賴項,必須在創建 bean 時注入。
在另一個類上,我有一個ObjectProvider
,它應該創建上面原型 bean 的實例。 我正在嘗試這樣的事情:
objectProvider.getObject(attribute);
但是 Spring 返回一個錯誤,說它找不到與參數匹配的構造函數。
我可以輕松地將我的代碼從基於構造函數的注入更改為基於屬性的注入,並且它會起作用。 但這不是一個好的做法,並且會使測試更難編寫。
有沒有辦法將 ObjectProvider 與具有自定義參數和依賴項的構造函數一起使用?
你可以這樣做:
@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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.