Java 当请求作用域不可用时,创建一个请求作用域bean单例
我有以下代码在Spring应用程序中定义一个bean请求范围的beanJava 当请求作用域不可用时,创建一个请求作用域bean单例,java,spring,scope,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 } 但有时我会想在离线应用程序中使用相同的bean,其中请求范围不可
@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public MyBean myBean() {
return new MyBean(); // actually it is a more complex initialization
}
但有时我会想在离线应用程序中使用相同的bean,其中请求
范围不可用,只有单例
和原型
可用
当
请求
不可用时,有没有办法使同一个bean采用单例
形式?您可以依赖spring概要文件吗?
您可以在2@bean
使用不同的@Scope
和@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
}
它工作得很好。我以前从未使用过
@Profile
。