SpringBoot系列之SpringBoot启动流程详解

文章目录

  • 前言
  • 一、SpringBoot流程分析-初始化
  • 二、SpringBoot流程分析-run
  • 总结


前言

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


一、SpringBoot流程分析-初始化

首先对SpringBoot主启动类进行debug,然后点击步入(setup into)如下:
SpringBoot系列之SpringBoot启动流程详解_第1张图片SpringBoot系列之SpringBoot启动流程详解_第2张图片继续步入,然后New了一个SpringApplication构造器,点击SpringApplication进入
SpringBoot系列之SpringBoot启动流程详解_第3张图片接着步入到SpringApplication构造器
SpringBoot系列之SpringBoot启动流程详解_第4张图片SpringBoot系列之SpringBoot启动流程详解_第5张图片进入SpringApplication构造源码,我们能够看到构造器中进行了①primarySources配置Source、②webApplicationType配置是否为web环境、③setInitializers创建初始化构造器、④mainApplicationClass配置主方法所在类

总结:

  1. 配置启动引导类(判断是否有启动主类)
  2. 判断是否是Web环境
  3. 获取初始化类、监听器类
    SpringBoot系列之SpringBoot启动流程详解_第6张图片

二、SpringBoot流程分析-run

点击run,进入该方法
SpringBoot系列之SpringBoot启动流程详解_第7张图片
SpringBoot系列之SpringBoot启动流程详解_第8张图片因此,Run方法中进行了下面操作:

  1. 启动计时器
  2. 执行监听器
  3. 准备环境
  4. 打印banner:可以resource下粘贴自定义的banner
  5. 创建context
refreshContext(context);
  1. 执行refreshContext方法后才真正创建Bean
    SpringBoot系列之SpringBoot启动流程详解_第9张图片

总结

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

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

2.创建Bean并启动

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

你可能感兴趣的:(SpringBoot系列,spring,boot,java,spring)