该篇文章仅作个人学习的一个总结处理,源码部分并未贴出来,只简单的列出一些方法。
SpringBoot启动流程可以分为两大类:
一. SpringApplication对象的创建
SpringApplication对象的创建,这个比较简单了,就是通过有参构造函数new()操作,方法截图如下:
这里面的构造方法主要是为后面完成启动方法run()的一些配置,(1)获取并设置启动类主要资源.(2)获取并设置你的项目类型.(3)获取并设置初始化容器对象,这个是通过读取spring.factories文件来完成的.(4)获取并设置监听器,同样也是通过读取spring.factories文件来完成的,这些准备完成之后,最后设置启动类参数。
二. 执行run()方法
这里面执行的东西还是比较多的,不过都是有迹可循,跟着源码可以一步步的往下看,更深一层的源码就没有去剖析了,只是列出大致的源码部分,如下截图
根据上面截图的大致方法来分析:
(1)获取运行过程中的监听器并启动,次监听器是监听项目启动过程中的一些事件,同样的这个监听器的获取是通过读取spring.factories文件来完成的。
(2)读取启动参数及配置文件,并设置环境信息,这步比较简单,就是获取到平时的那些xml文件及项目启动的时候你们所加的一些参数(比如nacos的参数-DV_NACOS_URL,表示nacos服务的地址)
(3)创建IOC容器,具体的流程就没有展示出来,你们可以进入到源码去看下。
(4)IOC容器前置处理,IOC容器刷新,IOC容器后置处理(这个方法是空的,什么都没有)。
(5)这里是分两部的,一是发布执行启动完毕的结束事件,供监听器处理,二是执行Runners。
欧克,最后的整个流程就分析到这里,内部的很多细节都没有写出来,不过这部分知识用到的场景还是面试这块,大部分面试官是不会专门的逮着小细节提问的,写的有不对的地方,评论留言指出,多多指教。