在文章 Springboot3.3.5 启动流程(源码分析) 中介绍了关键流程,本文详细介绍 AnnotationConfigServletWebServerApplicationContext
的创建。
备注: 本文未作任何申明时,默认 springboot 版本为 3.3.5
AnnotationConfigServletWebServerApplicationContext 类关系
Springboot 应用也是一个 spring 应用,下面我们先看看它的类关系:
AnnotationConfigServletWebServerApplicationContext 创建
创建入口
Springboot 中环境准备好后就开始创建应用上下文(ApplicationContext ), 它创建的是一个 ConfigurableApplicationContext
。 在 web servlet 环境下通常创建的就是 AnnotationConfigServletWebServerApplicationContext
。具体的创建位置位于 SpringApplication → run → createApplicationContext
创建流程
AnnotationConfigServletWebServerApplicationContext
创建详细时序图如下:
从以上时序图中可以看到, AnnotationConfigServletWebServerApplicationContext
创建流程非常简单,下面我们从源码看看它的创建:
-
- createApplicationContext
- createApplicationContext
-
- ApplicationContextFactory 创建 applicationContext
- ApplicationContextFactory 创建 applicationContext
-
- ServletWebServerApplicationContextFactory 具体实现类创建 applicationContext
- 3.1在实例化
AnnotationConfigServletWebServerApplicationContext
时,仅仅创建了一个AnnotatedBeanDefinitionReader
和ClassPathBeanDefinitionScanner
。
- 3.1在实例化
- ServletWebServerApplicationContextFactory 具体实现类创建 applicationContext
-
- AotDetector 探测是否启用了
aot
(关于aot
这里就不做介绍,可以参考官方文档), 如果没有启用aot
则创建AnnotationConfigServletWebServerApplicationContext
, 否则,创建ServletWebServerApplicationContext
.
AnnotationConfigServletWebServerApplicationContext
创建详细流程到此就介绍完了, 希望对各位小伙伴有所帮助。
- AotDetector 探测是否启用了
.