1.先上Springboot的执行流程:
第一步: 执行Springboot的Run()方法
第二步: 获取,启动运行过程的监听器
第三步:环境构建
第四步:创建IOC容器
第五步:IOC容器的前置处理
第六步:刷新容器
第七步:IOC容器的后置处理
第八步:发出结束执行的事件
第九步:执行runners
2.那源码如何进行分割?
第一步先切到启动类,用鼠标的焦点对着SpringApplication.Run()方法按ctrl+b就跳转到了里面的源码
源码以下:
解释关键源码:
1.this.primarySources = new LinkedHashSet(Arrays.asList(primarySources));
这行代码的意思是将主启动类设置到集合中存储起来
2.this.webApplicationType = WebApplicationType.deduceFromClasspath();
设置应用类型是Standard还是web
3.this.setInitializers(this.getSpringFactoriesInstances(ApplicationContextInitializer.class));
设置初始化(Initializers),启动过程中待调用
4.this.setListeners(this.getSpringFactoriesInstances(ApplicationListener.class));
设置一系列的监听器,启动过程中会触发