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