Tay*_*lor 14 java spring spring-mvc spring-ioc
我正在尝试设置一些代码,如果spring的请求范围可用,它将以一种方式运行,如果所述范围不可用则采用另一种方式.
有问题的应用程序是一个Web应用程序,但有一些JMX触发器和计划任务(即Quartz)也会触发调用.
例如
/**
* 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
假设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
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这看起来真的很笨重,所以我想知道是否有人知道一种优雅的Spring方式来询问某些东西,看看请求范围的bean是否可用.
非常感谢!
Ser*_*kov 12
您可以使用此处描述的if检查
if (RequestContextHolder.getRequestAttributes() != null)
// request thread
Run Code Online (Sandbox Code Playgroud)
而不是捕捉异常.有时这看起来像最简单的解决方案.
| 归档时间: |
|
| 查看次数: |
4825 次 |
| 最近记录: |