SpringBoot实现优雅关闭与降级的完整代码

 更新时间:2026年07月20日 08:40:19   作者:张老师技术栈  
还在为服务重启时请求中断和数据不一致烦恼吗?本文详解优雅关闭、手动降级和熔断降级的区别与实现,教你如何让应用处理完当前请求再停止,避免线上事故,需要的朋友可以参考下

发布新版本时如果直接 kill 进程,正在处理的请求会中断,数据可能不一致。优雅关闭让应用处理完当前请求再停止。

一、优雅关闭

server:
  shutdown: graceful
spring:
  lifecycle:
    timeout-per-shutdown-phase: 30s

二、手动降级

@Component
public class DegradeService {

    private final Map<String, Boolean> degradeRules = new ConcurrentHashMap<>();

    public boolean isDegrade(String key) {
        return degradeRules.getOrDefault(key, false);
    }

    public void enableDegrade(String key) {
        degradeRules.put(key, true);
    }

    public void disableDegrade(String key) {
        degradeRules.put(key, false);
    }

    public <T> T execute(String key, Supplier<T> supplier, T fallback) {
        if (isDegrade(key)) return fallback;
        return supplier.get();
    }
}

三、熔断降级

@RestController
public class DegradeController {

    @Autowired
    private DegradeService degradeService;

    @PostMapping("/degrade/enable")
    public ResultVO<?> enable(@RequestParam String key) {
        degradeService.enableDegrade(key);
        return ResultVO.success("已开启: " + key);
    }

    @PostMapping("/degrade/disable")
    public ResultVO<?> disable(@RequestParam String key) {
        degradeService.disableDegrade(key);
        return ResultVO.success("已关闭: " + key);
    }
}

到此这篇关于SpringBoot实现优雅关闭与降级的完整代码的文章就介绍到这了,更多相关SpringBoot优雅关闭与降级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决SpringBoot文件上传临时目录找不到的问题

    解决SpringBoot文件上传临时目录找不到的问题

    这篇文章主要介绍了解决SpringBoot文件上传临时目录找不到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java使用DSA密钥对生成XML签名的方法

    Java使用DSA密钥对生成XML签名的方法

    这篇文章主要介绍了Java使用DSA密钥对生成XML签名的方法,实例分析了java使用DSA密钥对生成XML签名的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Java并发编程之volatile与JMM多线程内存模型

    Java并发编程之volatile与JMM多线程内存模型

    这篇文章主要介绍了Java并发volatile与JMM多线程内存模型,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 详解Spring Security认证流程

    详解Spring Security认证流程

    这篇文章主要介绍了Spring Security认证流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • JavaEE中struts2实现文件上传下载功能实例解析

    JavaEE中struts2实现文件上传下载功能实例解析

    这篇文章主要为大家详细介绍了JavaEE中struts2实现文件上传下载功能实例,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 如何获取 Spring heapdump中的明文密码

    如何获取 Spring heapdump中的明文密码

    Actuator是Spring Boot提供的应用系统监控的开源框架,在攻防场景里经常会遇到Actuator配置不当的情况,攻击者可以直接下载heapdump堆转储文件,本文介绍如何获取 Spring heapdump中的密码明文,需要的朋友可以参考下
    2022-07-07
  • Springboot使用Spring Data JPA实现数据库操作

    Springboot使用Spring Data JPA实现数据库操作

    Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 规范的基础上开发的一个框架,使用 Spring Data JPA 可以极大地简化JPA 的写法,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作
    2021-06-06
  • SpringBoot集成OAuth2.0的实现示例

    SpringBoot集成OAuth2.0的实现示例

    OAuth2.0是安全授权协议,通过访问令牌替代密码,保障用户数据安全,适用于社交登录、第三方数据访问等场景,下面就来介绍一下SpringBoot集成OAuth2.0,感兴趣的可以了解一下
    2025-06-06
  • 使用Java获取List交集数据的实现方案小结

    使用Java获取List交集数据的实现方案小结

    今天遇到一个小需求,当用户上传了一个关于用户数据的列表,我们需要将其与数据库中已有的用户数据进行比较,所以本文给大家介绍了使用Java获取List交集数据的实现方案小结,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • SpringCloud 微服务数据权限控制的实现

    SpringCloud 微服务数据权限控制的实现

    这篇文章主要介绍的是权限控制的数据权限层面,意思是控制可访问数据资源的数量,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11

最新评论