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

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

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

注:仅适用于从Request里面取attributes属性
当前位置: 首页 > 技术研究 > Java > java 解决新线程中无法获取到RequestAttributes属性

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

发布于:2021-2-9 Java 1条评论 240 views
例如会报错:there is no request context
在调用线程或线程池之前设置:
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(requestAttributes,true);

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

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

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

One thought on “java 解决新线程中无法获取到RequestAttributes属性”

  1. gongxuwang说道:

    读后深有感触博主 thank

发表评论

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

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