我试图设置一些代码,如果弹簧的请求范围可用,将采用其中一种方式,如果所述范围不可用,则采用另一种方式。如何检查Spring中的请求范围可用性?
有问题的应用程序是一个web应用程序,但也有一些JMX触发器和计划任务(即Quartz)也触发了调用。
E.g.
/**
* This class is a spring-managed singleton
*/
@Named
class MySingletonBean{
/**
* This bean is always request scoped
*/
@Inject
private MyRequestScopedBean myRequestScopedBean;
/* can be invoked either as part of request handling
or as part of a JMX trigger or scheduled task */
public void someMethod(){
if(/* check to see if request scope is available */){
myRequestScopedBean.invoke();
}else{
//do something else
}
}
}
假设myRequestScopedBean
是请求作用域。
我知道这可以用try
做 - catch
周围的myRequestScopedBean
调用,如:
/**
* This class is a spring-managed singleton
*/
@Named
class MySingletonBean{
/**
* This bean is always request scoped
*/
@Inject
private MyRequestScopedBean myRequestScopedBean;
/* can be invoked either as part of request handling
or as part of a JMX trigger or scheduled task */
public void someMethod(){
try{
myRequestScopedBean.invoke();
}catch(Exception e){
//do something else
}
}
}
,但似乎真的笨重,所以我不知道是否有人优雅的春季办法知道询问一些东西,看看请求范围的bean是否可用。
非常感谢!
为什么你需要检查bean是否被请求作用域?这似乎很倒退。 – 2015-04-01 00:33:23
对不起,也许这个不清楚。这个bean总是被请求作用域,但'someMethod'的调用可能不是请求处理的一部分 – Taylor 2015-04-01 00:34:27
我仍然感到困惑。 'MyRequestScopedBean'是请求范围的。 'MySingletonBean'是单独作用域的。你需要检查什么?为什么? – 2015-04-01 00:36:46