SpringBoot版本:2.1.1
相信走完SpringBoot2.1.1启动流程分析以后,对事件应该是很熟悉了。
监听实现方式
1、在SpringApplication的构造方法中就会从META-INF/spring.factories得到ApplicationListener的实现类对象集合。
2、在发布ApplicationEnvironmentPreparedEvent事件时DelegatingApplicationListener会得到配置项"context.listener.classes"设置的listener,得到实例对象添加到多播器multicaster中。
3、在刷新应用上下文refreshContext()调用BeanFactoryPostProcessor接口实现类重写的postProcessBeanFactory()方法时,EventListenerMethodProcessor会得到一个DefaultEventListenerFactory,该类实现了SmartInitializingSingleton接口,在所有单实例bean实例化之后,会回调afterSingletonsInstantiated()方法,该方法中会处理带有@EventListener注解的方法,使用DefaultEventListenerFactory创建Listener,并添加到上下文
所以事件监听的实现方式这里就已经有三种了。
4、还有一种就是通过SprngApplication对象的