我想知道是否RequestScoped
上下文当前在方法中是否处于活动状态。
目前,这就是我所做的:
@Inject private BeanManager beanManager;
public boolean isRequestScopeActive() {
try {
if (beanManager.getContext(RequestScoped.class).isActive()) {
return true;
} else {
return false;
}
} catch (final ContextNotActiveException e) {
return false;
}
}
我觉得抓起来有点重ContextNotActiveException
只是为了知道范围是否处于活动状态。
您是否有更好的方法来了解 CDI 中上下文的状态(活动或非活动)?
不,我们在 CDI 1.0 中唯一的选择是捕获 ContextNotActiveException。
您的解决方案应该有效。
这实际上最终成为一个问题,因为范围实现不可用于注入。
例如。你不能只是@Inject RequestScopedContextImpl rq;
并检查rq.isActive()
方法,因为如果不知道 CDI 本身的实现细节,我们就无法访问该类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)