1.通過主執行緒呼叫m1方法,請求頭存在,sra 不為空
2.另起一個執行緒呼叫m1方法,請求頭丟了,sra為null,網上找了好多方法,基本都是這樣設定的,為啥我的不行。

@PostMapping(value = "/test")
public String postTest(HttpServletRequest request, @RequestBody Stu stu){
ExecutorService exe = Executors.newSingleThreadExecutor();
TestService testService = new TestService();
testService.m1();
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);
CompletableFuture.runAsync(()->{
testService.m1();
},exe);
return "11";
}
class TestService {
int m1(){
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
try {//模擬遠程呼叫 耗時5秒鐘
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 1;
}
}
uj5u.com熱心網友回復:
說明異步呼叫,sra 還沒有初始化成功,所以值為null轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283370.html
標籤:Java SE
上一篇:Nacos呼叫服務報UnknownHostException錯誤
下一篇:請求網址資料,報400
