SpringBoot3:ApplicationAvailability监控应用程序可用性状态
一、基本概念Liveness存活状态应用是否正常运行没崩溃、没死锁Readiness就绪状态应用是否准备好接收流量初始化完成、依赖加载成功ApplicationAvailabilitySpring提供的官方接口用于获取 / 监听这两个状态二、代码案例利用监听器注解在项目启动时监听通过ApplicationAvailability获取应用程序的可用性状态并对应处理。packagecom.pzj.springboot3.demos.states;importjakarta.annotation.Resource;importorg.springframework.boot.availability.ApplicationAvailability;importorg.springframework.boot.availability.AvailabilityChangeEvent;importorg.springframework.boot.availability.LivenessState;importorg.springframework.boot.availability.ReadinessState;importorg.springframework.context.event.EventListener;importorg.springframework.stereotype.Component;/** * 自定义Bean通过 ApplicationAvailability 获取应用可用性状态 */ComponentpublicclassAppAvailabilityMonitor{// 1. 直接注入 Spring 提供的 ApplicationAvailabilityResourceprivateApplicationAvailabilityapplicationAvailability;// 主动获取当前状态 publicvoidcheckCurrentState(){// 获取存活状态LivenessLivenessStatelivenessStateapplicationAvailability.getLivenessState();// 获取就绪状态ReadinessReadinessStatereadinessStateapplicationAvailability.getReadinessState();System.out.println(当前应用存活状态livenessState);System.out.println(当前应用就绪状态readinessState);}// 监听状态变化推荐 /** * 监听 存活状态Liveness 变化 */EventListenerpublicvoidonLivenessChange(AvailabilityChangeEventLivenessStateevent){LivenessStatestateevent.getState();System.out.println(【存活状态变更】state);// 业务逻辑比如应用挂了时告警、宕机时释放资源if(stateLivenessState.BROKEN){System.err.println(应用异常已停止服务);}}/** * 监听 就绪状态Readiness 变化 */EventListenerpublicvoidonReadinessChange(AvailabilityChangeEventReadinessStateevent){ReadinessStatestateevent.getState();System.out.println(【就绪状态变更】state);// 业务逻辑应用就绪后初始化任务、加载缓存、注册服务if(stateReadinessState.ACCEPTING_TRAFFIC){System.out.println(应用已就绪可以接收流量);initBusinessTask();}}// 模拟业务初始化privatevoidinitBusinessTask(){System.out.println(执行业务初始化加载配置、预热缓存...);}}