SpringBoot 源码解析:应用上下文构造流程
在 SpringBoot 启动流程中,创建应用程序上下文是核心环节之一。本文聚焦于 createApplicationContext() 方法的具体实现,深入分析 AnnotationConfigServletWebServerApplicationContext 的初始化过程。
源码入口
在 SpringApplication.run() 方法的执行逻辑中,第 6 步负责创建应用程序上下文:
// SpringApplication 类方法
public ConfigurableApplicationContext run(String... args) {
// ... 前置步骤 ...
// 6. 创建应用程序上下文
context = createApplicationContext();
// ... 后续步骤 ...
}
核心代码即实例化 AnnotationConfigServletWebServerApplicationContext:
public class AnnotationConfigServletWebServerApplicationContext
extends ServletWebServerApplicationContext implements AnnotationConfigRegistry {
private final AnnotatedBeanDefinitionReader reader;
private final ClassPathBeanDefinitionScanner scanner;
public AnnotationConfigServletWebServerApplicationContext() {
this.reader = new AnnotatedBeanDefinitionReader(this);
this.scanner = new ClassPathBeanDefinitionScanner(this);
}
}
这里初始化了两个关键组件:注解 Bean 定义读取器(reader)和类路径 Bean 定义扫描器(scanner)。它们都接收当前上下文实例作为参数,用于后续的 Bean 注册与管理。
一、初始化注解 Bean 定义读取器
AnnotatedBeanDefinitionReader 负责处理带有注解的配置类。其构造函数主要完成三件事:获取注册表、获取环境对象、注册配置处理器。


