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();