java 解决新线程中无法获取到RequestAttributes属性

例如会报错:there is no request context
在调用线程或线程池之前设置:
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(requestAttributes,true);

因为渲染中会调用request调用子请求,所以需要将RequestAttributes对象设置为子线程共享

简单来说就是,调用setRequestAttributes方法以后就把原来放在ThreadLocal对象中的属性放到InheritableThreadLocal对象中了,这就是为什么子线程可以获取到HttpServletRequest 对象的原因。

注:仅适用于从Request里面取attributes属性

评论

《“java 解决新线程中无法获取到RequestAttributes属性”》 有 1 条评论

  1. 读后深有感触博主 thank

回复 gongxuwang 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据