1、前言java
前面的文章咱们讲解了一下spring boot配置文件加载的相关源码分析,下面咱们将从源码角度讲解一下spring boot 相关的事件机制, 本章咱们将从 SpringApplicationEvent类分析一下spring boot 的事件机制。spring
2、类图app
能够从类图中看到 SpringApplicationEvent 下有不少的实现类。咱们首先从SpringApplicationEvent入手看看他其实是如何运行的源码分析
3、源码解析this
SpringApplicationEventspa
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; } }
能够看到,他的内部实际上调用了父类的一些放入 如code
1. SpringApplicationEvent(SpringApplication application, String[] args)事件
中调用了super(application) ,get
2. getSpringApplication(SpringApplication application, String[] args)源码
中调用了 getSource();