这个过程就是找出所有的应用程序事件监听器。运行SpringApplication初始化SpringApplication完成之后,调用run方法运行:SpringApplicationRunListeners listeners = this.getRunListeners;同样的通过调用getSpringFactoriesInstances方法去META-INF/spring.factories文件中拿到SpringApplicationRunListener监听器,当前的SpringApplicationRunListener事件监听器只有一个EventPublishingRunListener广播事件监听器:SpringApplicationRunListeners内部持有SpringApplicationRunListener集合和1个Log日志类。用于SpringApplicationRunListener监听器的批量执行。SpringApplicationRunListener用于监听SpringApplication的run方法的执行,它定义了5个步骤:1.starting:run方法执行的时候立马执行,对应的事件类型是ApplicationStartedEventSpringApplicationRunListener目前只有一个实现类EventPublishingRunListener,详见获取SpringApplicationRunListeners。它把监听的过程封装成了SpringApplicationEvent事件并让内部属性ApplicationEventMulticaster接口的实现类SimpleApplicationEventMulticaster广播出去,广播出去的事件对象会被SpringApplication中的listeners属性进行处理。判断环境,如果是web程序,创建StandardServletEnvironment;否则,创建StandardEnvironment。

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现

SpringBoot启动过程的实现