異步線程RequestContextHolder.getRequestAttributes()爲null

使用Spring框架,在Service中開啓一個新的線程,在新的線程中使用
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
獲取出來爲null,有沒有什麼辦法能解決?多線程

問題出現的環境背景及本身嘗試過哪些方法

Service中爲優化響應時間,使用了多線程,部分線程中使用到了RequestContextHolder類,結果返回值爲空。框架

相關代碼

RequestAttributes ra = RequestContextHolder.getRequestAttributes();
ServletRequesRequestContextHolder.getRequestAttributes()tAttributes sra = (ServletRequestAttributes) ra;
HttpServletRequest request = sra.getRequest();
System.out.println(request.getContextPath());優化

你期待的結果是什麼?實際看到的錯誤信息又是什麼?

期待:System.out.println(request.getContextPath());正常打印出路徑,
實際:RequestAttributes ra = RequestContextHolder.getRequestAttributes();spa

 

開啓新線程以前,添加代碼:
//將RequestAttributes對象設置爲子線程共享
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);線程

相關文章
相關標籤/搜索