RequestContextHolder.getRequestAttributes()空指針問題及解決
RequestContextHolder.getRequestAttributes()空指針
現(xiàn)象
HttpServletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
報(bào)空指針異常:
java.lang.NullPointerException: null
原因
在代碼中開啟了子線程,在子線程中寫了此段代碼。
我這邊是由于用了parallelStream,在并行流的業(yè)務(wù)代碼中嘗試獲取Request。
解析
1、RequestContextHolder.getRequestAttributes()為null
是由于保存requestAttributes的對象是線程隔離的ThreadLocal對象,當(dāng)http請求發(fā)送到服務(wù)端時,每個請求會開啟一個線程來處理,由RequestContextListener來初始化RequestContextHolder。
RequestContextHolder.setRequestAttributes(attributes);
當(dāng)開啟了子線程時,不會自動調(diào)用setRequestAttributes方法,所以從ThreadLocal中獲取時為null
2、parallelStream是會開啟子線程的,由于上述原因引發(fā)了異常
解決
1、由主線程獲取,傳遞給子線程
2、不要用并行流,parallelStream改為stream
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解
這篇文章主要介紹了Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08AbstractProcessor擴(kuò)展MapStruct自動生成實(shí)體映射工具類
這篇文章主要為大家介紹了AbstractProcessor擴(kuò)展MapStruct自動生成實(shí)體映射工具類實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01druid監(jiān)控?zé)o法關(guān)閉的坑以及處理方式
這篇文章主要介紹了druid監(jiān)控?zé)o法關(guān)閉的坑以及處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05java實(shí)體對象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例
這篇文章主要介紹了java實(shí)體對象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12Java的Spring框架中AOP項(xiàng)目的一般配置和部署教程
這篇文章主要介紹了Java的Spring框架中AOP項(xiàng)目的一般配置和部署教程,AOP面向方面編程的項(xiàng)目部署結(jié)構(gòu)都比較類似,因而也被看作是Spring的一種設(shè)計(jì)模式使用,需要的朋友可以參考下2016-04-04Mybatis分頁查詢的實(shí)現(xiàn)(Rowbounds和PageHelper)
本文主要介紹了Mybatis分頁查詢的實(shí)現(xiàn)(Rowbounds和PageHelper),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01SpringCloud Gateway自動裝配實(shí)現(xiàn)流程詳解
Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供一種簡單有效的、統(tǒng)一的 API 路由管理方式。Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于 Filter 鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點(diǎn)和限流等2022-10-10