我已启用异步到我的Spring Boot应用程序中:
@Configuration
@EnableAsync
public class BackOfficeConfiguration {}
我创建了这个异步方法:
@Async
public void importDocuments() {}
importDocuments
代码只是:
@Async
public void importDocuments() {
// Do something
// Get current request context
ServletRequestAttributes requestAttributes =
(ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
}
在RequestContextHolder.currentRequestAttributes()
上,spring boot让我遇到了这个异常:
java.lang.IllegalStateException:未找到线程绑定请求:您是在实际Web请求之外引用请求属性,还是在原始接收线程之外处理请求?如果您实际上是在Web请求中操作并且仍然收到此消息,则您的代码可能在DispatcherServlet / DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter公开当前请求。
如何在异步方法中获取当前的HttpServletRequest
?