摘要:在框架中,有多种事件这些时间会在不同的运行时刻发布,来通知监听者。本文仅仅介绍的事件的监听。也可以在文件中配置。
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 ApplicationListenerextends 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{ @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)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73697.html
摘要:在创建之前,实际上触发了一些事件,因此不能将侦听器注册为。使用的事件发布机制发送应用程序事件,该机制的一部分确保在子环境中发布给侦听器的事件也会在任何祖先上下文中被发布给监听器。 23. SpringApplication SpringApplication类提供了一种方便的方法来引导从main()方法开始的Spring应用程序。在许多情况下,你可以委托给静态SpringApplica...
摘要:参考创建所有运行监听器并发布应用启动事件来看下创建运行监听器相关的源码创建逻辑和之前实例化初始化器和监听器的一样,一样调用的是方法来获取配置的监听器名称并实例化所有的类。 上篇《Spring Boot 2.x 启动全过程源码分析(一)入口类剖析》我们分析了 Spring Boot 入口类 SpringApplication 的源码,并知道了其构造原理,这篇我们继续往下面分析其核心 ru...
摘要:设置应用上线文初始化器的作用是什么源码如下。来看下方法源码,其实就是初始化一个应用上下文初始化器实例的集合。设置监听器和设置初始化器调用的方法是一样的,只是传入的类型不一样,设置监听器的接口类型为,对应的文件配置内容请见下方。 Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boot 为什么这么简便的奥秘。 本篇基于 S...
摘要:有了配置文件之后,启动程序,我们首先可以看到日志输入,由此可以看出程序读取了的配置。首先,根据的全局查找功能,直接搜索这些词出现的位置,进行定位,可以找到这个日志出现于方法之中。由于我们的配置文件在下,所以只要留意当为的程序执行情况即可。 前言 上文《一文掌握 Spring Boot Profiles》 是对 Spring Boot Profiles 的介绍和使用,因此本文将从源码角度...
阅读 2685·2023-04-26 00:42
阅读 2822·2021-09-24 10:34
阅读 3840·2021-09-24 09:48
阅读 4169·2021-09-03 10:28
阅读 2596·2019-08-30 15:56
阅读 2789·2019-08-30 15:55
阅读 3282·2019-08-29 12:46
阅读 2261·2019-08-28 17:52