Bootstrap

SpringBoot系列之SpringBoot启动流程详解


前言

SpringBoot的启动流程在我们面试的时候会经常被问,接下来我们根据源码来分析了解下SpringBoot是怎么启动的


一、SpringBoot流程分析-初始化

首先对SpringBoot主启动类进行debug,然后点击步入(setup into)如下:
在这里插入图片描述在这里插入图片描述继续步入,然后New了一个SpringApplication构造器,点击SpringApplication进入
在这里插入图片描述接着步入到SpringApplication构造器
在这里插入图片描述在这里插入图片描述进入SpringApplication构造源码,我们能够看到构造器中进行了①primarySources配置Source、②webApplicationType配置是否为web环境、③setInitializers创建初始化构造器、④mainApplicationClass配置主方法所在类

总结:

  1. 配置启动引导类(判断是否有启动主类)
  2. 判断是否是Web环境
  3. 获取初始化类、监听器类
    在这里插入图片描述

二、SpringBoot流程分析-run

点击run,进入该方法
在这里插入图片描述
在这里插入图片描述因此,Run方法中进行了下面操作:

  1. 启动计时器
  2. 执行监听器
  3. 准备环境
  4. 打印banner:可以resource下粘贴自定义的banner
  5. 创建context
refreshContext(context);
  1. 执行refreshContext方法后才真正创建Bean
    在这里插入图片描述

总结

SpringBoot启动流程分为两部分:
1.初始化SpringApplication

  1. 配置启动引导类(判断是否有启动主类)
  2. 判断是否是Web环境
  3. 获取初始化类、监听器类

2.创建Bean并启动

  1. 启动计时器
  2. 执行监听器
  3. 准备环境
  4. 打印banner:可以resource下粘贴自定义的banner
  5. 创建context
  6. 执行refreshContext方法后才真正创建Bean
;