- 通过SpringFactoriesLoader工厂加载类加载。
- 使用key为applicationListener进行加载。
Spring Boot事件监听模式
监听模式四要素:
- 事件。
- 监听器
- 广播器
- 触发机制
Spring Boot内置了以下事件
- ApplicationStartingEvent--->run方法首次启动时立即调用
- ApplicationEnvironmentPreparedEvent--->环境准备之后 创建Appplicationcontex之前
- ApplicationContextInitializedEvent--->创建applicationContext之后 未加载任何bean之前
- ApplicationPreparedEvent--->在应用程序上下文已加载但尚未刷新之前调用
- ApplicationStartedEvent--->上下文已刷新应用程序已启动但尚未调用 未调用applicationRunner和CommandLineRunner
- ApplicationReadyEvent--->调用所有CommandLineRunner和applicationRunner之后
- ApplicationFailedEvent--->异常错误时
获取监听器列表流程
自定义监听器实现
- 实现方式实现ApplicationListener接口,指定泛型。
- 可以有三种是实现方式,第一,配置META-INF,第二硬编码方式在SpringApplication对象下addListener。第三,使用配置文件以context.listener.classes可以实现。第四,实现SmartApplicationListener,在supportsEventType中声明自己关注的事件。
- 分别给每个自定义监听器的实现加一个@Order。
常见问题小结
- 监听模式:监听四要素。
- SpringBoot关于监听器相关的实现类有哪些:BackgroundPreinitializer,ClearCachesApplicationListener,ParentContextCloserApplicationListener,CloudFoundryVcapEnvironmentPostProcessor、FileEncodingApplicationListener、AnsiOutputApplicationListener、DelegatingApplicationListener、ClasspathLoggingApplicationListener、LoggingApplicationListener、LiquibaseServiceLocatorApplicationListener
- 介绍一下监听事件的触发机制?
- 如何自定义实现系统监听器及注意事项?
- 实现ApplicationListener接口与SmartApplicationListener接口的区别。