都做成图了,方便理解和掌握全局关系 。
BootstrapRegistryInitializer
触发条件:在 Spring Boot 应用程序启动过程的最早阶段,但在 ApplicationStartingEvent 之前触发。
作用:允许在 Spring 上下文(ApplicationContext)创建之前注册自定义的初始化器
ApplicationStartingEvent
触发条件:在Spring Boot应用程序运行开始时,但在任何处理之前立即触发。
作用:可以用来在非常早期阶段执行一些初始化操作,例如设置系统属性或记录启动日志。
ApplicationEnvironmentPreparedEvent
触发条件:当Spring Environment准备好,并且ApplicationContext创建之前触发。
作用:可以用来配置或修改变量,或者查看环境属性。
ApplicationContextInitializer环节的作用就是对之前的环境配置进行修改和补充
ApplicationContextInitializedEvent
触发条件:在ApplicationContext已经初始化,但任何bean还没有被加载之前触发。
作用:可以用来进一步操作ApplicationContext,例如添加自定义的BeanFactoryPostProcessor。
ApplicationPreparedEvent
触发条件:在ApplicationContext已经准备就绪,并且所有的bean定义已经被加载,但在bean被实例化之前触发。
作用:可以用来添加额外的bean定义或者检查已加载的bean定义。
ApplicationStartedEvent
触发条件:在ApplicationContext已经启动,所有的bean都已经被初始化之后触发。不可以添加新的bean
作用:可以用来执行那些需要在应用程序完全启动后运行的代码。
存活探针(Liveness Probe):
触发条件:当存活探针成功时,LivenessState.CORRECT 状态会被设置。
作用:表示应用程序仍在运行,没有遇到严重问题。
事件:当存活探针状态改变时,会触发 AvailabilityChangeEvent 事件。
就绪探针(Readiness Probe):
触发条件:当就绪探针成功时,ReadinessState.ACCEPTING_TRAFFIC 状态会被设置。
作用:表示应用程序已经准备好接收请求,可以处理流量。
事件:当就绪探针状态改变时,会触发 AvailabilityChangeEvent 事件。
ApplicationReadyEvent
触发条件:在应用程序已经准备好服务请求之后触发。
作用:可以用来执行启动完成后的最终任务,例如通知其他系统或执行一些健康检查。
ApplicationFailedEvent
触发条件:如果Spring Boot应用程序启动失败,则触发此事件。
作用:可以用来处理启动失败的情况,例如记录错误日志或者发送警报。
除了上述事件,Spring Boot 2.3.0及以上版本引入了探针(Probes),这些探针用于健康检查和就绪检查: