springboot接口超時配置過程及異常處理方式
SpringBoot控制接口超時設(shè)置
超時三部曲:
- 1.配置
- 2.接口定義
- 3. 異常處理
1.配置
提示:springboot項目設(shè)置接口超時時間(基本配置)
spring:
mvc:
async:
request-timeout: 2000 //單位是毫秒哦 2000代表2秒配置不好用? 繼續(xù)往下看啊
提示:
如果想讓配置生效,需要符合此配置對應(yīng)的接口規(guī)范。
2.接口定義
提示:
首先是異步的,需要單獨開一個線程去執(zhí)行.
第二需要的返回值的是Callable<泛型>,泛型中是你真正要返回的數(shù)據(jù)類型。
/**
* 設(shè)置超時用的測試接口.通常如下寫法
*
* @return 返回值一定是Callable<T>的.
*/
@GetMapping("/test")
public Callable<ResultVO> timeOutMethod() {
//new Callable<> 單獨開啟一個線程去執(zhí)行
return new Callable<ResultVO>() {
@Override
public ResultVO call() throws Exception {
//這里將會觸發(fā)超時
Thread.sleep(10000);
//正常返回邏輯
return ResultVO.response(ReturnEnum.PAY_TOP_UP_ORDER, String.valueOf(new IdWorker().nextId()));
}
};
}
3.異常處理
提示:捕獲AsyncRequestTimeoutException異常,進行統(tǒng)一的處理。
@ControllerAdvice //所有的Controller都會進入到這個類?
public class BaseExceptionAdvice {
@ExceptionHandler(AsyncRequestTimeoutException.class)
public ResponseEntity<JSONObject> handException(AsyncRequestTimeoutException e) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("timestamp", DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
jsonObject.put("status", 500);
jsonObject.put("message","接口超時");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(jsonObject);
}
//往下還可以寫很多的異常統(tǒng)一處理方法.上面只是寫了超時異常的處理,其它無關(guān)主題的省略了.
}
測試結(jié)果
返回友好的超時報錯.

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java編程中使用JDBC API連接數(shù)據(jù)庫和創(chuàng)建程序的方法
這篇文章主要介紹了Java編程中使用JDBC API連接數(shù)據(jù)庫和創(chuàng)建程序的基本教程,JDBC是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問需要的朋友可以參考下2015-12-12
springboot 獲取訪問接口的請求的IP地址的實現(xiàn)
本文主要介紹了springboot獲取訪問接口的請求的IP地址的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
細(xì)數(shù)java for循環(huán)中的那些坑
這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Spring Cloud Gateway使用Token驗證詳解
這篇文章主要介紹了Spring Cloud Gateway使用Token驗證詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02
Java中ScheduledExecutorService介紹和使用案例(推薦)
ScheduledExecutorService是Java并發(fā)包中的接口,用于安排任務(wù)在給定延遲后運行或定期執(zhí)行,它繼承自ExecutorService,具有線程池特性,可復(fù)用線程,提高效率,本文主要介紹java中的ScheduledExecutorService介紹和使用案例,感興趣的朋友一起看看吧2024-10-10
IDEA創(chuàng)建Maven項目一直顯示正在加載的問題及解決
這篇文章主要介紹了IDEA創(chuàng)建Maven項目一直顯示正在加載的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Struts1和struts2的區(qū)別_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Struts1和struts2的區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09

