springboot接口超时配置过程及异常处理方式
更新时间:2026年05月24日 10:30:33 作者:台风-.-
SpringBoot控制接口超时设置三步曲:配置、接口定义与异常处理,掌握超时时间配置、异步处理及统一异常处理策略,确保接口高效稳定运行
SpringBoot控制接口超时设置
超时三部曲:
- 1.配置
- 2.接口定义
- 3. 异常处理
1.配置
提示:springboot项目设置接口超时时间(基本配置)
spring:
mvc:
async:
request-timeout: 2000 //单位是毫秒哦 2000代表2秒配置不好用? 继续往下看啊
提示:
如果想让配置生效,需要符合此配置对应的接口规范。
2.接口定义
提示:
首先是异步的,需要单独开一个线程去执行.
第二需要的返回值的是Callable<泛型>,泛型中是你真正要返回的数据类型。
/**
* 设置超时用的测试接口.通常如下写法
*
* @return 返回值一定是Callable<T>的.
*/
@GetMapping("/test")
public Callable<ResultVO> timeOutMethod() {
//new Callable<> 单独开启一个线程去执行
return new Callable<ResultVO>() {
@Override
public ResultVO call() throws Exception {
//这里将会触发超时
Thread.sleep(10000);
//正常返回逻辑
return ResultVO.response(ReturnEnum.PAY_TOP_UP_ORDER, String.valueOf(new IdWorker().nextId()));
}
};
}
3.异常处理
提示:捕获AsyncRequestTimeoutException异常,进行统一的处理。
@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);
}
//往下还可以写很多的异常统一处理方法.上面只是写了超时异常的处理,其它无关主题的省略了.
}
测试结果
返回友好的超时报错.

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java中Elasticsearch 实现分页方式(三种方式)
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎,这篇文章主要介绍了Elasticsearch实现分页的3种方式,需要的朋友可以参考下2022-07-07
SpringBoot+logback默认日志的配置和使用方式
这篇文章主要介绍了SpringBoot+logback默认日志的配置和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-05-05
springmvc字符编码过滤器CharacterEncodingFilter的使用
这篇文章主要介绍了springmvc字符编码过滤器CharacterEncodingFilter的使用,具有很好的参考价值,希望对大家有所帮助。2021-08-08
Springboot使用redis实现接口Api限流的示例代码
本文主要介绍了Springboot使用redis实现接口Api限流的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-07-07


最新评论