春季启动异步:在异步方法中获取HttpServletRequest

时间:2018-12-04 11:38:49

标签: spring spring-boot

我已启用异步到我的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

0 个答案:

没有答案