我試圖設置一些代碼,如果彈簧的請求範圍可用,將採用其中一種方式,如果所述範圍不可用,則採用另一種方式。如何檢查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