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方法。

  1. 同时看到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 就是发起源

0
0

Spring Boot2.0深度实践 核心原理拆解+源码分析

系统化剖析Spring Boot 2.0,掌握技术原理,学习源码阅读技巧

2909 学习 · 213 问题

查看课程