引言
对于Java语言中最流行的项目脚手架SpringBoot,相信很多程序员都和之前的我一样停留在会用却说不出它的启动流程的阶段,每次去好一点的甲方公司面试一旦面试官问到SpringBoot的详细启动流程是什么时都会很懵圈,大部分没有研究过SpringBoot框架源码的的小伙伴99%是答不上来的,然后面试官一句回去等消息吧直接凉凉。那么本文就带领还没有研究过SpringBoot框架源码的小伙伴们来捋一捋SpringBoot应用的启动流程机制。
1 SpringBoot启动的流程总览
每一个SpringBoot程序都有一个主入口,这个主入口就是main方法,而main方法中都会调用SpringBootApplication.run方法,一个快速了解SpringBootApplication启动过程的好方法就是在run方法中打一个断点,然后通过Debug的模式启动工程,逐步跟踪了解SpringBoot源码是如何完成环境准备和启动加载bean的。
查看SpringBootApplication.run方法的源码就可以发现SpringBoot启动的流程主要分为两大阶段:
初始化SpringApplication运行SpringApplication
运行SpringApplication的过程
其中运行SpringApplication的过程又可以细分为以下几个部分:
1)SpringApplicationRunListeners 引用启动监控模块
2)ConfigrableEnvironment配置环境模块和监听:包括创建配置环境、加载属性配置文件和配置监听
3)ConfigrableApplicationContext配置应用上下文:包括配置应用上下文对象、配置基本属性和刷新应用上下文