前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot学习篇|主启动类的运行

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

作者头像
h0cksr
发布2023-05-17 10:49:28
2250
发布2023-05-17 10:49:28
举报
文章被收录于专栏:h0cksr的小屋h0cksr的小屋

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启动结束
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-6-18 6,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot学习篇|主启动类的运行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档