博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringApplicationRunListener
阅读量:1940 次
发布时间:2019-04-25

本文共 1972 字,大约阅读时间需要 6 分钟。

SpringApplicationRunListener

SpringApplicationRunListener是一个只有SpringBoot应用的
main方法执行过程中接收不同执行时点事件通知的监听者

public interface SpringApplicationRunListener {
void started(); void environmentPrepared(ConfigurableEnvironment environment); void contextPrepared(ConfigurableApplicationContext context); void contextLoaded(ConfigurableApplicationContext context); void finished(ConfigurableApplicationContext context, Throwable exception);}

对于我们来说,基本没什么常见的场景需要自己实现一个SpringApplicationRunListener,即使SpringBoot默认也只是实现了一个org.spring-framework.boot.context.event.EventPublishingRunListener用于在SpringBoot启动的不同时点发布不同的应用事件类型(ApplicationEvent),如果有哪些ApplicationListener对这些应用事件感兴趣,则可以接收并处理。(还记得SpringApplication实例初始化的时候加载了一批ApplicationListener,但是在run方法执行流程中却没有被使用的丝毫痕迹吗?EventPublishingRunListener就是答案!)

假设我们真的有场景需要自定义一个SpringApplicationRunListener实现,那么有一点需要注意,即任何一个SpringApplicationRunListener实现类的构造方法(Constructor)需要有两个构造参数,一个构造参数的类型就是我们的org.springframework.boot.SpringApplication,另外一个就是args参数列表的String[]:

public class DemoSpringApplicationRunListener implements SpringApplicationRunListener {
@Override public void started() {
// do whatever you want to do } @Override public void environmentPrepared(ConfigurableEnvironment environment) {
// do whatever you want to do } @Override public void contextPrepared(ConfigurableApplicationContext context) {
// do whatever you want to do } @Override public void contextLoaded(ConfigurableApplicationContext context) {
// do whatever you want to do } @Override public void finished(ConfigurableApplicationContext context, Throwable exception) {
// do whatever you want to do }}

之后,我们可以通过SpringFactoriesLoader立下的规矩,在当前SpringBoot应用的classpath下的META-INF/spring.factories文件中进行类似如下的配置:

org.springframework.boot.SpringApplicationRunListener=\com.keevol.springboot.demo.DemoSpringApplicationRunListener

然后SpringApplication就会在运行的时候调用它啦!

转载地址:http://gotuf.baihongyu.com/

你可能感兴趣的文章
centos7安装
查看>>
hadoop相关介绍
查看>>
HTTP协议解析
查看>>
数据结构
查看>>
软件测试基础
查看>>
软件测试分类
查看>>
软件测试面试技术题
查看>>
性能测试流程详解
查看>>
接口测试1
查看>>
测试用例设计方法重点说明
查看>>
自动化测试1--selenium
查看>>
常用算法1:动态规划--Leetcode
查看>>
常用算法2:回溯法--Leetcode
查看>>
常用算法3:分治法--Leetcode
查看>>
自动化测试2--unittest
查看>>
单元测试
查看>>
京东web登录测试用例编写
查看>>
常用算法4:二叉树--Leetcode
查看>>
接口测试2——jmeter
查看>>
软件测试大佬求职过程是怎样的
查看>>