前言
SpringBoot的启动流程在我们面试的时候会经常被问,接下来我们根据源码来分析了解下SpringBoot是怎么启动的
一、SpringBoot流程分析-初始化
首先对SpringBoot主启动类进行debug,然后点击步入(setup into)如下:
继续步入,然后New了一个SpringApplication构造器,点击SpringApplication进入
接着步入到SpringApplication
构造器
进入SpringApplication构造源码,我们能够看到构造器中进行了①primarySources
配置Source、②webApplicationType
配置是否为web环境、③setInitializers
创建初始化构造器、④mainApplicationClass
配置主方法所在类
总结:
- 配置启动引导类(判断是否有启动主类)
- 判断是否是Web环境
- 获取初始化类、监听器类
二、SpringBoot流程分析-run
点击run
,进入该方法
因此,Run方法中进行了下面操作:
- 启动计时器
- 执行监听器
- 准备环境
- 打印banner:可以resource下粘贴自定义的banner
- 创建context
refreshContext(context);
- 执行refreshContext方法后才真正创建Bean
总结
SpringBoot启动流程分为两部分:
1.初始化SpringApplication
- 配置启动引导类(判断是否有启动主类)
- 判断是否是Web环境
- 获取初始化类、监听器类
2.创建Bean并启动
- 启动计时器
- 执行监听器
- 准备环境
- 打印banner:可以resource下粘贴自定义的banner
- 创建context
- 执行refreshContext方法后才真正创建Bean