我有以下代码在Spring应用程序中定义bean请求范围的bean。
@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public MyBean myBean() {
return new MyBean(); // actually it is a more complex initialization
}
但有时我会想要在request
范围不可用的离线应用程序中使用相同的bean,只有singleton
和prototype
。
当singleton
不可用时,有没有办法让同一个bean假定为request
表单?
答案 0 :(得分:1)
@Bean
和@Scope
的2 @Profile
使用的私有方法提取bean创建
这样的事情:
@Bean
@Profile('prod')
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public MyBean myBeanProd() {
return getMyBean()
}
@Bean
@Profile('test')
@Scope(value = "singleton", proxyMode = ScopedProxyMode.TARGET_CLASS)
public MyBean myBeanWithoutRequestScope() {
return getMyBean()
}
privateMyBean getMyBean() {
return new MyBean(); // actually it is a more complex initialization
}