spring boot之SpringApplication 事件监听
spring application listener
在 spring 框架中,有多种事件, 这些时间会在不同的运行时刻发布,来通知监听者。本文仅仅介绍 SpringApplicationEvent 的事件的监听。
事件类型
| EventType | 发布时间 |
|---|---|
| ApplicationContextInitializedEvent | 在 SpringApplication正在启动, ApplicationContext 已经准备好了,ApplicationContextInitializers 被调用, bean definitions 被加载之前 |
| ApplicationStartingEvent | 在一次启动之前发布 |
| ApplicationEnvironmentPreparedEvent | 在 Environment 准备好之后,会有 context 去使用这一 Environment, 会在 context 创建之前发出 |
| ApplicationPreparedEvent | 会在 bean definitions 加载之后,refresh 之前发布 |
| ApplicationStartedEvent | context 更新之后,任何应用或命令行启动调用之前 |
| ApplicationReadyEvent | 任何应用或命令行启动调用之后发布,说明应用已经可以被请求了 |
| ApplicationFailedEvent | 启动发生有异常时发步 |
如何监听
监听器需要使用 org.springframework.context.ApplicationListener 这个接口的实例, 其声明如下:
@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
/**
* Handle an application event. * @param event the event to respond to
*/
void onApplicationEvent(E event);
}
需要使用 SpringApplication.addListeners(…) 或 SpringApplicationBuilder.listeners(…) 来添加监听器。也可以在 META-INF/spring.factories 文件中配置:org.springframework.context.ApplicationListener=com.example.project.MyListener。
例子:
public class StartingEventListener implements ApplicationListener<ApplicationStartingEvent> {
@Override
public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) {
System.out.println("called own starting listener");
System.out.println(applicationStartingEvent.getClass());
}
}
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args){
SpringApplication application = new SpringApplication(DemoApplication.class);
application.addListeners(new StartingEventListener());
application.run(args);
}
}
终端运行 jar 包:
$ java -jar build/libs/springlisteners-0.0.1-SNAPSHOT.jar called own starting listener class org.springframework.boot.context.event.ApplicationStartingEvent . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.3.RELEASE)
上一篇:IDEA最新激活码2021(IDEA2020.3.2最新永久激活方法)
栏 目:JAVA代码
下一篇:java socket长连接中解决read阻塞的3个办法
本文标题:spring boot之SpringApplication 事件监听
本文地址:http://www.codeinn.net/misctech/84039.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




