Springboot启动流程之ApplicationContext 创建

devtools/2024/11/15 4:54:43/

在文章 Springboot3.3.5 启动流程(源码分析) 中介绍了关键流程,本文详细介绍 AnnotationConfigServletWebServerApplicationContext 的创建。

备注: 本文未作任何申明时,默认 springboot 版本为 3.3.5

AnnotationConfigServletWebServerApplicationContext 类关系

Springboot 应用也是一个 spring 应用,下面我们先看看它的类关系:
class-relationship

AnnotationConfigServletWebServerApplicationContext 创建

创建入口

Springboot 中环境准备好后就开始创建应用上下文(ApplicationContext ), 它创建的是一个 ConfigurableApplicationContext。 在 web servlet 环境下通常创建的就是 AnnotationConfigServletWebServerApplicationContext。具体的创建位置位于 SpringApplication → run → createApplicationContext
在这里插入图片描述

创建流程

AnnotationConfigServletWebServerApplicationContext 创建详细时序图如下:请添加图片描述
从以上时序图中可以看到, AnnotationConfigServletWebServerApplicationContext创建流程非常简单,下面我们从源码看看它的创建:

    1. createApplicationContext
      在这里插入图片描述
    1. ApplicationContextFactory 创建 applicationContext
      在这里插入图片描述
    1. ServletWebServerApplicationContextFactory 具体实现类创建 applicationContext
      在这里插入图片描述
      • 3.1在实例化 AnnotationConfigServletWebServerApplicationContext 时,仅仅创建了一个 AnnotatedBeanDefinitionReaderClassPathBeanDefinitionScanner
        在这里插入图片描述
    1. AotDetector 探测是否启用了 aot(关于aot 这里就不做介绍,可以参考官方文档), 如果没有启用 aot 则创建 AnnotationConfigServletWebServerApplicationContext, 否则,创建 ServletWebServerApplicationContext.
      在这里插入图片描述
      AnnotationConfigServletWebServerApplicationContext 创建详细流程到此就介绍完了, 希望对各位小伙伴有所帮助。

.


http://www.ppmy.cn/devtools/133391.html

相关文章

在Photoshop中填充图层颜色

一、使用油漆桶工具 选择油漆桶工具:在工具栏中找到并选择油漆桶工具(快捷键G)。选择图层:在图层面板中选择你想要填充颜色的图层。设置填充属性:在工具选项栏中,可以选择合适的填充模式、不透明度和容差值…

WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单

文章目录 1. 引言案例效果3. ComboBox 基础4. 自定义 ComboBox 样式4.1 定义 ComboBox 样式4.2 定义 ComboBoxItem 样式4.3 定义 ToggleButton 样式4.4 定义 Popup 样式5. 示例代码6. 结论1. 引言 在WPF应用程序中,ComboBox控件是一个常用的输入控件,用于从多个选项中选择一…

没有数据库也能用 SQL

手头有些 csv/xls 文件,比如这样的: 这种数据很适合用 SQL 做查询,但可惜 SQL 只能用在数据库,要安装个数据库并把这些文件导入,为这么个目标搞的整个应用系统都臃肿很多,实在是划不来。要是有什么技术能直…

代码随想录刷题记录(二十七)——55. 右旋字符串

(一)问题描述 55. 右旋字符串(第八期模拟笔试)https://kamacoder.com/problempage.php?pid1065字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数&…

JavaScript如何操作HTML:动态网页构建指南

JavaScript如何操作HTML:动态网页构建指南 在现代网页开发中,JavaScript不仅是实现网页交互性的关键技术,也是动态操作HTML文档对象模型(DOM)的重要工具。通过JavaScript,开发者可以在运行时修改网页的内容…

[C++]——位图与布隆过滤器

目录 一、前言 二、正文 1.位图 1.1 位图概念 1.2 位图的实现 1.2.1 Set 1.2.2 ReSet 1.2.3 Text 1.3 位图的应用 2.布隆过滤器 2.1布隆过滤器的提出 2.2 布隆过滤器概念 2.3 布隆过滤器的实现 2.3.1布隆过滤器的插入 2.3.2 布隆过滤器的查找 2.3.3 布隆过滤器…

021_SSH_Mysql校园播客系统(视频播放 评论)_lwplus87

摘 要 Internet是一个蕴藏着无穷资源的宝库,在资源共享和信息交换方面具有得天独厚的优势。21世纪的今天,上网已经成为很多人工作、生活中必不可少的一部分,这很大程度上是由于网页承载了任何一种媒介都无法比拟的丰富资源,网页…

Android 解决Java和Kotlin JDK编译版本不一致异常

异常信息 Execution failed for task :andcodec:compileDebugKotlin. > compileDebugJavaWithJavac task (current target is 1.8) and compileDebugKotlin task (current target is 17) jvm target compatibility should be set to the same Java version.Consider using …