Springboot启动流程-持续记录中

注:转载请携带本文链接及公众号信息

公众号:codelike
在这里插入图片描述

基于springboot2.6.x 源码

Springboot启动之第一篇 SpringApplication构造器

启动入口方法是new SpringApplication.run(),一切的开始都从这里
这里做了什么呢 分为初始化SpringApplication实体、执行run()方法

构造器 new SpringApplication()

构造方法

public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {//resourceLoader资源加载器,一般传入都是nullthis.resourceLoader = resourceLoader;Assert.notNull(primarySources, "PrimarySources must not be null");//主源集合 也就是我们的启动类this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));//推断程序类型,根据引入的包,推断出程序类型//类型分为三类: NONE:非web程序,SERVLET:web程序,REACTIVE:响应式web程序this.webApplicationType = WebApplicationType.deduceFromClasspath();//去spring.factories里找BootstrapRegistryInitializer的实现类this.bootstrapRegistryInitializers = new ArrayList<>(getSpringFactoriesInstances(BootstrapRegistryInitializer.class));//设置默认的初始化器 比如SharedMetadataReaderFactoryContextInitializer等setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));//设置默认的监听器 比如EnvironmentPostProcessorApplicationListener等setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));//我们自己的启动类本身this.mainApplicationClass = deduceMainApplicationClass();
}

资源加载器(ResourceLoader)
● resourceLoader 参数用于指定应用程序的资源加载器。资源加载器负责加载应用程序中的各种资源,如配置文件、模板文件等。这个参数允许你自定义资源加载的策略

  1. 主要源(Primary Sources):
    ○ primarySources 参数是一个可变参数,用于指定主要的源。主要的源通常是指包含 main 方法的类,即应用程序的入口点。这些类将用于启动 Spring Boot 应用程序上下文。
  2. Web 应用程序类型(WebApplicationType):
    ○ WebApplicationType 用于指定应用程序的类型,即它是一个普通的应用程序、一个 Web 应用程序还是一个响应式的 Web 应用程序。该类型是通过检查类路径上的相关类来推断的。
  3. Bootstrap 注册表初始化器(BootstrapRegistryInitializer):
    ○ bootstrapRegistryInitializers 是一个用于初始化 Bootstrap 注册表的初始化器列表。Bootstrap 注册表是 Spring 框架引导过程的一部分,用于注册一些基础设施的组件。
  4. 应用程序上下文初始化器(ApplicationContextInitializer):
    ○ 通过 getSpringFactoriesInstances(ApplicationContextInitializer.class) 获取应用程序上下文初始化器的实例,并将其设置为应用程序的初始化器。
  5. 应用程序监听器(ApplicationListener):
    ○ 通过 getSpringFactoriesInstances(ApplicationListener.class) 获取应用程序监听器的实例,并将其设置为应用程序的监听器。
  6. 主应用程序类(Main Application Class):
    ○ mainApplicationClass 是通过 deduceMainApplicationClass() 方法推断出的主要应用程序类。这个类通常是包含 main 方法的类,它被用于启动 Spring Boot 应用程序

觉得有帮助
请关注下公众号:coderlike
每日分享热门技术/代码黑科技/动手实现各类中间件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661943.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

QLayout布局器QObject子节点遍历

遍历QObject的子节点 #include <QObject> #include <QDebug>void printObjectTree(const QObject *object, int level 0) {if (!object) return;// 创建缩进字符串&#xff0c;用于表示层级QString indent(level * 2, ); // 打印对象的类名和对象名qDebug() <…

使用 pytest 相关特性重构 appium_helloworld

一、前置说明 在 pytest 基础讲解 章节,介绍了 pytest 的特性和基本用法,现在我们可以使用 pytest 的一些机制,来重构 appium_helloworld 。 appium_helloworld 链接: 编写第一个APP自动化脚本 appium_helloworld ,将脚本跑起来 代码目录结构: pytest.ini 设置: [pyt…

基于ssm社区生鲜电商平台论文

目 录 摘 要 I Abstract II 1 绪论 1 1.1研究背景 1 1.2研究现状 1 1.3研究内容 2 2 相关技术简介 3 2.1 B/S结构 3 2.2 MYSQL数据库 3 2.3 Java简介 4 2.4 SSM框架简介 5 3 系统分析 7 3.1 可行性分析 7 3.1.1 技术可行性 7 3.1.2 经济可行性 7 3.1.3 操作可行性 7 3.1.3 法律…

利用太阳能供电的远程视频监控方案设计:智能分析网关V4+4G摄像头鱼塘视频监控

一、行业背景 传统的鱼塘养殖模式由于养殖区域面积大、管理难度高&#xff0c;经常会出现偷钓者、盗窃鱼苗、非法入侵等监管难题&#xff0c;给养殖户带来了不小的经济损失。为了解决这些问题&#xff0c;搭建鱼塘远程监控系统成为了必要之举。通过远程监控系统&#xff0c;管…

Gateway集成方法以及拦截器和过滤器的使用

前提&#xff1a;请先创建好一个SpringBoot项目 1. 引入依赖 SpringCloud 和 alibabaCloud 、 SpringBoot间对版本有强制要求&#xff0c;我使用的springboot是3.0.2的版本。版本对应关系请看&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <dependency…

css 用多个阴影做出光斑投影的效果 box-shadow

css 用多个阴影做出光斑投影的效果 box-shadow 你首先需要知道的一点是 box-shadow 可以接收多个值&#xff0c;也就是可以设置多个阴影&#xff0c;这样就可以做一个类似光斑投影的效果。 一、效果 二、代码 里面用到了我一些 scss 工具方法&#xff0c;不过不影响&#xf…

2023年华为OD机试(python)B卷-符合要求的结对方式

一、题目 题目描述&#xff1a; 用一个数组A代表程序员的工作能力&#xff0c;公司想通过结对编程的方式提高员工的能力&#xff0c;假设结对后的能力为两个员工的能力之和&#xff0c;求一共有多少种结对方式使结对后能力为N。 二、输入输出 输入描述: 5 1 2 2 2 3 4 第一行为…

《网络是怎样连接的》2.1节图表(自用)

图3.1&#xff1a;协议栈的组成 图3.2&#xff1a;netstat命令查看套接字 上图中每一行就是一个套接字 图3.3&#xff1a;协议栈在浏览器访问DNS服务器与web服务器时的具体工作流程 套接字由协议栈创建 应用程序通过Socket库中的程序组件与协议栈交互

Amphion tts(Text to Speech) 语音合成

强烈推荐使用带 GPU 的 Ubuntu 或 Centos 系统运行&#xff0c;可以租一个比较便宜的机器实例运行&#xff0c;如AutoDL 有了机器我们就可以按步骤操作了 step1 模型下载 git clone https://github.com/open-mmlab/Amphion.git cd Amphionstep2 下载训练好的模型文件 huggin…

OR-3120——IGBT驱动光耦,替代HCPL-3120,FOD3120,TLP250H等等

具有MOSFET高输入阻抗和GTR低导通压降特性提供隔离反馈 高隔离电压 3.0A输出电流 工业温度范围&#xff1a;–40C 至 110C 宽工作 VCC 范围 特点&#xff1a; VCM 1500V 时最小共模抑制 &#xff08;CMR&#xff09; 为 35 kV/μs 最大低电平输出电压 &#xff08;VOL&…

服务端如何防止订单重复支付

服务端如何防止订单重复支付&#xff1f; 概述为了防止掉单&#xff0c;这里可以这样处理&#xff1a;为了防止订单重复提交&#xff0c;可以这样处理&#xff1a;附上微信支付最佳实践&#xff1a; 概述 如图是一个简化的下单流程&#xff0c;首先是提交订单&#xff0c;然后…

有效解决vcruntime140_1.dll丢失的问题,关于vcruntime140_1.dll文件

今天在使用电脑的过程中突然提示找不到vcruntime140_1.dll&#xff0c;出现这样的提示后&#xff0c;想要在打开程序时&#xff0c;有再一次提示找不到vcruntime140_1.dll&#xff0c;不能在正常打开程序&#xff0c;那么有什么办法可以解决vcruntime140_1.dll丢失的问题呢&…

第十章 Bus信息总线

Bus信息总线 gitee:springcloud_study: springcloud&#xff1a;服务集群、注册中心、配置中心&#xff08;热更新&#xff09;、服务网关&#xff08;校验、路由、负载均衡&#xff09;、分布式缓存、分布式搜索、消息队列&#xff08;异步通信&#xff09;、数据库集群、分布…

【PyQt】(自定义类)QIcon派生,更易用的纯色Icon

嫌Qt自带的icon太丑&#xff0c;自己写了一个&#xff0c;主要用于纯色图标的自由改色。 当然&#xff0c;图标素材得网上找。 Qt原生图标与现代图标对比&#xff1a; 没有对比就没有伤害 Qt图标 网络素材图标 自定义类XJQ_Icon&#xff1a; from PyQt5.QtGui import QIc…

Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error

大致报错日志如下&#xff1a; The last packet successfully received from the server was 11 milliseconds ago. The last packet sent successfully to the server was 10 milliseconds ago.at sun.reflect.GeneratedConstructorAccessor275.newInstance(Unknown Source)…

Jackson—Anti-Human IgE Antibodies

Jackson lmmunoResearch推出一系列适用于诊断试剂研发的Mouse Monoclonal Anti-Human IgE antibodies&#xff08;小鼠抗人IgE单克隆抗体&#xff09;&#xff0c;补充了Jackson现有的抗人lgG、IgM和lgA抗体产品&#xff0c;抗人IgE可与一系列特定的报告分子偶联&#xff08;如…

HTML+CSS+JS网页设计期末课程大作业 web课程设计 web前端开发 网页规划与设计

HTMLCSSJS网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计 &#x1f4a5; 文章目录一、&#x1f6a9; 网站描述二、&#x1f38c; 网站介绍三、&#x1f3f4; 网站类型A 个人博客主题B 人物明星主题C 旅游主题D 游戏主题E 动漫主题F 美食主题G 校园主题H 企…

HTML5+CSS3小实例:左右摇晃的输入框

实例:左右摇晃的输入框 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">&l…

网页设计期末 建筑博物馆首页 HTML+CSS+js 完整代码(轮播图+瀑布流)

文章目录 前言&#xff1a;完整代码在总结处跳转&#xff01;&#xff01;&#xff01; 描述&#xff1a;结果展示&#xff1a;部分代码演示&#xff1a;&#xff08;完整代码在总结处跳转&#xff09;总结&#xff1a;&#xff08;完整代码在此处跳转&#xff09; 前言&#x…

Unity C# Mp3 Mp4 音频 视频 合成

需求 将声音文件合并到视频中 限制 暂时只支持Windows使用 准备 下载ffmpeg.exe 解压后得到exe https://ffmpeg.org/download.html#releases 注意事项&#xff1a; 目录要在一起 代码 public void StartExe(){if (File.Exists(ffmpegExe)){ string mp4;string mp3;//…