对于springboot技术来说,它用于加速spring程序的开发,核心本质还是spring程序的运行,所以于其说是springboot程序的启动流程,不如说是springboot对spring程序的启动流程做了哪些更改。
其实不管是springboot程序还是spring程序,启动过程本质上还是在做容器的初始化,并将对应的bean加入到容器中。在spring中每个bean都需要自己配置,而在springboot 中包含了许多自动配置了许多bean对象,帮助开发者提前预设了许多bean的初始化过程,加上各种参数,使容器的初始化过程相对复杂,但是核心还是在做一件事,初始化容器,作为开发者只要搞清楚springboot提供了哪些参数配置环境,同时初始化过程中做了哪些事情就可以了。
springboot初始化参数,更具参数的额来源可以分为三步
1、环境参数(Environment) 系统参数、监听器等
2、系统参数 (spring.factory)
3、参数 (main函数入口的参数args,核心配置文件中的参数 application.properties)
核心就这两步,初始化参数,创建容器
总结
根据jar包中包含的类,确定所需要创建的容器类型,根据容器类型创建需要的环境并封装到environment对象中,其中包含系统参数和监听器。根据容器类型创建对应容器,将环境参数加载到容器中。容器加载完后刷新容器(加载spring的容器),后面还有两个扩展接口,可以实现在容器完成创建后执行。