我正在制定一个解决方案,如果我正处于Web请求中,或者其他内容,那么应该采取一些措施。
我在做什么
@Autowired private HttpServletRequest request;
然后尝试访问变量:
request.getRequestURI()
但我得到了java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request...
我想避免异常并以某种方式询问HttpServletRequest
天气与否我是否在网络请求中。
有什么办法吗?
实施例: 其他信息:
@Override public void trace(String msg) { if (loggerFactory.isRegisteredUrl(request.getRequestURI())){ loggerFactory.getCustomeLogger(request.getRequestURI()).trace(msg); return; } nativelogger.trace(msg); }
答案 0 :(得分:2)
您可能(未经测试)使用RequestContextHolder.getRequestAttributes():
返回当前绑定到该线程的RequestAttributes。
返回: 当前绑定到线程的RequestAttributes,如果没有绑定,则为null
因此,如果方法返回null,则当前线程不处理请求。如果它返回一个非空值,则它正在处理一个。