【发布时间】:2016-06-21 07:23:48
【问题描述】:
我定义了两个相同类的 bean:
@Bean
@Scope("singleton")
public MyBean myBeanSingleton(){
return new MyBean()
}
@Bean
@Scope("request")
public MyBean myBeanRequest(){
return new MyBean()
}
还有另一个原型作用域 bean:
@Component
@Scope("prototype")
public class MyPrototype {
@Autowired
private MyBean myBean
}
当没有可用的请求时,Spring 应用程序上下文是否可以自动注入正确的 bean?
我希望myBeanRequest 在 Web 上下文中(例如在控制器中)获取 MyPrototype bean 时被注入,我希望在没有 Web 上下文时注入 myBeanSingleton(例如当我运行时)通过 Quartz 调度程序的一些代码)。
目前spring每次都尝试注入myBeanRequest,因此在没有可用请求时失败。
我非常想坚持使用MyPrototype 的 ONE bean 定义,因为会有许多不同的 bean 需要类似的行为,因此使用限定符和两个不同的 bean 定义(用于请求和单例)不适合我的案例。
也许有一些 spring 组件可以让我以编程方式选择要注入的 bean?
【问题讨论】:
-
你试过弹簧型材吗?
-
嗨,弹簧配置文件不允许我同时使用这两种方案。如果我想要请求 bean 或单例 bean,我将不得不选择。我希望spring根据是否有可用的网络请求自动注入正确的bean......
标签: java spring spring-mvc dependency-injection