Spring-Boot启动过程-事件

Spring中的监听器listeners是负责在应用启动过程中对各个阶段,对容器的启动过程监听并处理各阶段的动作,它的生命周期也只存在于应用开启启动到启动完成。监听器接收的信号即“事件(event)”在spring项目启动过程中主要分为四个阶段——开始启动、环境参数加载完成、准备完毕、启动成功|失败。

spring的启动过程是通过一系列的事件(event)在spring context启动的各个阶段通知并告知各组件,Spring事件继承org.springframework.context.ApplicationEvent,在springframework中事件类型主要包含如下:

  • ApplicationContextEvent (abstract) 以下四种容器生命节点事件的父类
  • ContextStartEvent 容器开始启动时触发
  • ContextRefreshEvent 容器刷新时触发
  • ContextStopEvent 容器开启停止时触发
  • ContextClosedEvent 容器关闭后触发
  • PayloadApplicationEvent<T> 广泛的(通过泛型定义)可处理的事件,需要提供事件的处理(即T)
  • RequestHandledEvent 在web环境中接收到请求事件
  • ServletRequestHandledEvent 在web环境中接收到请求事件,包含servlet信息,是RequestHandledEvent事件的拓展

在SpringBoot中,容器启动过程使用另一套事件,即继承org.springframework.boot.context.event.SpringApplicationEvent

  • ApplicationStartingEvent 应用开始启动时触发(等于 ApplicationStartedEvent
  • ApplicationEvironmentPreparedEvent 应用环境(参数加载)准备完成时触发
  • ApplicationPreparedEvent 应用准备完成时触发,准备完成包含。。。
  • ApplicationFailedEvent 应用启动失败的情况下触发
  • ApplicationReadyEvent 应用启动成功后触发

除此之外还有其他事件:

  • AuditApplicationEvent
  • DataSourceInitializedEvent 数据库连接建立完成时触发
  • EmbeddedServletContainerInitializedEvent 在web环境下,内嵌的servlet容器初始化完成后触发
  • ExitCodeEvent 应用收到关闭信号时触发,一般只在应用启动过程中收到此事件。
  • JobExecutionEvent 有定时任务执行时触发