一、前言
前面的文章我们讲解了一下spring boot配置文件加载的相关源码分析,下面我们将从源码角度讲解一下spring boot 相关的事件机制, 本章我们将从 SpringApplicationEvent类分析一下spring boot 的事件机制。
二、类图
可以从类图中看到 SpringApplicationEvent 下有很多的实现类。我们首先从SpringApplicationEvent入手看看他实际上是如何运行的
三、源码解析
package org.springframework.boot.context.event;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationEvent;
/**
* 与SpringApplication相关的ApplicationEvent基类
*
*
*/
@SuppressWarnings("serial")
public abstract class SpringApplicationEvent extends ApplicationEvent {
private final String[] args;
public SpringApplicationEvent(SpringApplication application, String[] args) {
super(application);
this.args = args;
}
public SpringApplication getSpringApplication() {
return (SpringApplication) getSource();
}
public final String[] getArgs() {
return this.args;
}
}
可以看到,他的内部实际上调用了父类的一些放入 如
构造中调用了super(application) ,
getSpringApplication()中调用了 getSource();