现象: httpservletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttribute
httpservletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
报空指针异常,java.lang.NullPointerException: null。
在代码中开启了子线程,在子线程中写了此段代码。
我这边是由于用了parallelStream,在并行流的业务代码中尝试获取Request。
RequestContextHolder.getRequestAttributes()为null,是由于保存requestAttributes的对象是线程隔离的ThreadLocal对象,当Http请求发送到服务端时,每个请求会开启一个线程来处理,由RequestContextListener来初始化RequestContextHolder。
RequestContextHolder.setRequestAttributes(attributes);
当开启了子线程时,不会自动调用setRequestAttributes方法,所以从ThreadLocal中获取时为null
2、parallelStream是会开启子线程的,由于上述原因引发了异常
由主线程获取,传递给子线程
2、不要用并行流,parallelStream改为stream
来源地址:https://blog.csdn.net/weixin_43838174/article/details/129580675
--结束END--
本文标题: RequestContextHolder.getRequestAttributes()空指针
本文链接: https://www.lsjlt.com/news/391463.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0