SpringBoot学习篇|主启动类的运行

2023-05-17 10:49:28 浏览数 (1)

SpringBoot学习篇|主启动类的运行

代码语言:javascript复制
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Demo3Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo3Application.class, args);

    }

}

一张图说明一切

文字描述一下就是:

  1. 构造函数init加载初始化
    1. 推断应用类型是否为web
    2. 通过getSpringFactoriesIns根据传入的类名得到所需工厂集合实例,加载所有可用初始化器
    3. 通过getSpringFactoriesIns根据传入的类名得到所需工厂集合实例,设置所有可用程序监听器
    4. 推断并设置main方法定义类(执行Run函数的类,也就是参数类)

    根据传入的类名得到所需工厂集合实例流程:

    1. 通过加载器获取spring.factories文件
    2. 获取文件中工厂类全路径
    3. 通过工厂类反射,得到工厂类的class对象,执行构造方法
    4. 生成工厂类实例并返回
  2. 执行实例化对象的run方法
    1. 启动实例计时器和开启应用监听器的监听功能,进行headless系统属性设置
    2. 通过factoriesInstances根据传入的类名得到所需工厂集合实例,初始化监听器
    3. 启动已准备好的监听器
    4. 装配环境参数
      1. 创建配置环境
      2. 加载属性资源(配置属性值)
      3. 加入预监听集合
    5. 打印banner图案
    6. 加载上下文 根据类型创建web/standard上下文
    7. 通过factoriesInstances根据传入的类名得到所需工厂集合实例,准备上下文异常报告器
    8. 上下文前置处理prepareContext
      1. 配置监听
      2. 进行环境配置
      3. initialize初始化设置
      4. 获取资源并且进行加载
    9. 进行上下文刷新refreshContext
      1. 加载bean工厂
      2. 通过工厂生产Bean
      3. 刷新生命周期
    10. 上下文后置结束处理afterRefresh 到此计时器结束监听
    11. 发布引用上下文,启动完成
    12. 执行Runner运行器
    13. 发布应用上下文九旭后返回
  3. SpringApplication启动结束

0 人点赞