SpringApplicationRunListeners的方法
来源:3-10 SpringApplication 运行阶段

qq_君君晨晨_0
2019-07-18
在SpringApplication的运行阶段,加载监听器之后,您给了下面的截图,
这个截图是什么意思?
是(1)的意思还是(2)的意思?
(1)在Spring应用刚启动时,就会发出ApplicationStartingEvent事件,监听器监听到了ApplicationStartingEvent事件,然后执行Starting的方法。
(2)在Spring应用刚启动时,执行Starting方法,然后Starting方法发出ApplicationStartingEvent事件。
也就是说到底是事件触发了方法的执行,还是方法发出了对应的事件?
2.如果(2)是正确的,那么是谁调用了Starting等方法?
3.假如应用有多个SpringApplicationRunListener的实现类,是否每个实现类的方法在对应阶段都会运行?
比如实现类A和B,A和B在Spring应用刚启动时都会执行starting方法。
- 同时看到EventPublishingRunListener实现了SpringApplicationRunListener,源码如下
它在starting中发出了ApplicationStartingEvent事件,这样做是意义在哪里?
public class EventPublishingRunListener implements SpringApplicationRunListener, Ordered {
//省略...
@Override
public void starting() {
this.initialMulticaster.multicastEvent(
new ApplicationStartingEvent(this.application, this.args));
}
//省略...
}
看了很多遍没看懂,望讲解,感谢。
写回答
1回答
-
小马哥
2020-02-09
SpringApplicationRunListeners 会调用多个 SpringApplicationRunListener,其中有一个实现是 EventPublishingRunListener,它来发送 Spring Boot 事件。事件是被动触发,换言之,事件是有发起源,这里 EventPublishingRunListener 就是发起源
00
相似问题