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编程中使用JDBC API连接数据库和创建程序的方法
这篇文章主要介绍了Java编程中使用JDBC API连接数据库和创建程序的基本教程,JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问需要的朋友可以参考下2015-12-12
Spring Cloud Gateway使用Token验证详解
这篇文章主要介绍了Spring Cloud Gateway使用Token验证详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-02-02
Java中ScheduledExecutorService介绍和使用案例(推荐)
ScheduledExecutorService是Java并发包中的接口,用于安排任务在给定延迟后运行或定期执行,它继承自ExecutorService,具有线程池特性,可复用线程,提高效率,本文主要介绍java中的ScheduledExecutorService介绍和使用案例,感兴趣的朋友一起看看吧2024-10-10
Struts1和struts2的区别_动力节点Java学院整理
这篇文章主要为大家详细介绍了Struts1和struts2的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-09-09


最新评论