spring boot之SpringApplication 事件监听
springapplicationlistener
在spring框架中,有多种事件,这些时间会在不同的运行时刻发布,来通知监听者。本文仅仅介绍SpringApplicationEvent的事件的监听。
事件类型
EventType
发布时间
ApplicationContextInitializedEvent
在 SpringApplication正在启动, ApplicationContext 已经准备好了,ApplicationContextInitializers 被调用, beandefinitions 被加载之前
ApplicationStartingEvent
在一次启动之前发布
ApplicationEnvironmentPreparedEvent
在 Environment 准备好之后,会有 context 去使用这一 Environment,会在 context 创建之前发出
ApplicationPreparedEvent
会在 beandefinitions 加载之后,refresh 之前发布
ApplicationStartedEvent
context 更新之后,任何应用或命令行启动调用之前
ApplicationReadyEvent
任何应用或命令行启动调用之后发布,说明应用已经可以被请求了
ApplicationFailedEvent
启动发生有异常时发步
如何监听
监听器需要使用org.springframework.context.ApplicationListener这个接口的实例,其声明如下:
@FunctionalInterface publicinterfaceApplicationListenerextendsEventListener{ /** *Handleanapplicationevent.*@parameventtheeventtorespondto */ voidonApplicationEvent(Eevent); }
需要使用SpringApplication.addListeners(…)或SpringApplicationBuilder.listeners(…)来添加监听器。也可以在META-INF/spring.factories文件中配置:org.springframework.context.ApplicationListener=com.example.project.MyListener。
例子:
publicclassStartingEventListenerimplementsApplicationListener{ @Override publicvoidonApplicationEvent(ApplicationStartingEventapplicationStartingEvent){ System.out.println("calledownstartinglistener"); System.out.println(applicationStartingEvent.getClass()); } }
@SpringBootApplication publicclassDemoApplication{ publicstaticvoidmain(String[]args){ SpringApplicationapplication=newSpringApplication(DemoApplication.class); application.addListeners(newStartingEventListener()); application.run(args); } }
终端运行jar包:
$java-jarbuild/libs/springlisteners-0.0.1-SNAPSHOT.jar calledownstartinglistener classorg.springframework.boot.context.event.ApplicationStartingEvent ._________ /\\/___'_____(_)______\\\\ (()\___|'_|'_||'_\/_`|\\\\ \\/___)||_)|||||||(_||)))) '|____|.__|_||_|_||_\__,|//// =========|_|==============|___/=/_/_/_/ ::SpringBoot::(v2.1.3.RELEASE)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。