当请求范围不可用时,请求作用域的bean单例

时间:2016-03-12 06:03:39

标签: java spring scope

我有以下代码在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,只有singletonprototype

singleton不可用时,有没有办法让同一个bean假定为request表单?

1 个答案:

答案 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
}