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有定时任务执行时触发