中通面经

news/2024/11/19 21:37:52/文章来源:https://www.cnblogs.com/codingbao/p/18433069

中通面经

1、Springboot的启动流程是怎么样的?

image-20240926101402512

image-20240926102408015

new SpringApplication():

在SpringApplication的构造函数中,调用了一个initialize方法,所以他的初始化逻辑直接看这个initialize方法就行了。

image-20240926102425594

1、添加源:将提供的源(通常是配置类)添加到应用的源列表中

2、设置web环境:判断应用是否应该运行在web环境中,这会影响后续的web相关配置

3、加载初始化器:从spring.factories文件中加载所有列出的ApplicationContextInitializer实现,并将他们设置到SpringApplication实例中,以便在应用上下文的初始化阶段执行他们。

4、设置监听器:加载和设置ApplicationListener实例,以便应用能够响应不同的事件。

5、确定主应用类:确定主应用类,这个应用程序类通常是包含public static void main(String[] args)方法的类,是启动整个SpringBoot应用的入口点

这里的第三步,加载初始化器这一步是springboot的自动配置的核心,因为在这一步会从spring.factories文件中加载并实例化指定类型的类。

image-20240926103122051

image-20240926103149188

SpringApplication.run

这个方法是SpringApplication类的核心,用于启动Spring Boot应用。

image-20240926103438112

  • 启动&停止计时器
  • 获取和启动监听器
  • 装配环境参数(application.properties文件中的属性,环境变量、系统属性等)
  • 打印Banner
  • 创建应用上下文(到这一步真的开始启动了,第一步就是先要创建一个Spring的上下文出来,只有有了这个上下文才能进行Bean的加载、配置等工作)
  • 准备上下文
  • 刷新上下文(Spring启动的核心步骤,实例化所有的bean、设置他们之间的依赖关系以及执行其他的初始化任务、创建BeanFactory实例化Bean、web容器的启动)

总体框架

image-20240926104209907

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

助力降本增效,ByteHouse打造新一代云原生数据仓库

随着数据量的爆炸式增长、企业上云速度加快以及数据实时性需求加强,云原生数仓市场迎来了快速发展机遇。据 IDC、Gartner研究机构数据显示,到 2025 年,企业 50% 数据预计为云存储,75% 数据库都将运行在云上,全球数据处理预计有 30% 为实时数据处理,80% 数据预计为非结构化…

.NET 工具库高效生成 PDF 文档

前言 QuestPDF 是一个开源 .NET 库,用于生成 PDF 文档。使用了C# Fluent API方式可简化开发、减少错误并提高工作效率。利用它可以轻松生成 PDF 报告、发票、导出文件等。 项目介绍 QuestPDF 是一个革命性的开源 .NET 库,它彻底改变了我们生成 PDF 文档的方式。 QuestPDF 的核…

【数据库】生产问题(数据迁移)

MySQL 亿级数据平滑迁移实战(来自vivo) https://www.cnblogs.com/vivotech/p/183736231、方案选型 常见的迁移方案大致可以分为以下几类:而预约业务有以下特点:读写场景多,频率高,在用户预约/取消预约/福利发放等场景均涉及到大量的读写。 不可接受停机,停机不可避免的会…

Git 分支管理全攻略:一篇博客带你玩转代码分支!

什么是分支?在 Git 里,分支其实就有点像一个树的枝杈,每个分支上可以有不同的文件的版本,并且不会互相干扰。什么是分支?在 Git 里,分支其实就有点像一个树的枝杈,每个分支上可以有不同的文件的版本,并且不会互相干扰。 ​ 分支功能有什么用?在工作中,我们经常是需要…

关于python自动化测试

最近在家搭建了一套可以复用的自动化测试框架,本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure 通过 Python+Requests 来发送和处理HTTP协议的请求接口,使用 Pytest 作为测试执行器,使用 YAML 来管理测试数据,使用 Allure 来生成测试报告

加油站智能视频分析盒

加油站智能视频分析盒通过深度学习视频分析技术,加油站智能视频分析盒代替人眼,7*24小时不间断实时对加油站现场人员行为及设备进行识别站。加油站智能视频分析盒不同于传统安防监管方式,加油站智能视频分析盒可以全年24小时不停歇的对现场人员不合规行为并进行一直持续不断…

【C++】C++提高编程

C++提高编程 本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用 1. 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点:模板不可以直接使用,只是一个框架 模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为泛型编程,主要利…

【C++】C++核心编程

C++核心编程 本阶段主要针对C++面向对象编程技术,C++中的核心和精髓。 1. 内存分区模型 C++程序在执行时,将内存大方向分为4个区域:代码区:存放函数体的二进制代码,由操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数…

矿山安全生产监测预警系统

矿山安全生产监测预警系统通过计算机视觉技术,矿山安全生产监测预警系统对矿山生产过程中的人的不安全行为”、“物的不安全状态”、“环境的不安全因素”三方面出发进行实时监测,当矿山安全生产监测预警系统监测到现场画面中人员未穿反光衣行为、明火烟雾、未穿安全帽行为、…

算法与数据结构——简单排序算法(选择、冒泡、插入)

简单排序算法 时间复杂度均为O(n2) 选择排序 选择排序(selection sort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序的区间的末尾。 算法流程 设数组长度为n,选择排序的算法流程如下。初识状态下,所有元素未排序,即未排序(索引)区…

广州C++信奥老师解一本通题 1260:1282:最大子矩阵

​ 【题目描述】已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 1)子矩阵。 比如,如下4 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2的最大子矩阵是9 2 -4 1 -1 8这个子矩阵的大小是15。【输入】输入是一个NN的…

煤矿AI智能视频分析识别系统

煤矿AI智能视频分析识别系统是在现场已有监控系统的基础上,煤矿AI智能视频分析识别系统通过计算机视觉技术对现场人员行为以及物体状态进行实时分析检测。煤矿AI智能视频分析识别系统对皮带跑偏、撕裂、堆煤、异物、非法运人、有煤无煤状态等异常情况,以及人员工服穿戴、反光…