1. ConfigurationClassPostProcessor 核心作用解析
ConfigurationClassPostProcessor 是 Spring 框架中处理 @Configuration 注解类的核心处理器,属于 BeanDefinitionRegistryPostProcessor 接口的实现。它的主要职责是在容器启动阶段解析所有标注 @Configuration 的类,并将其中的 bean 定义注册到 Spring 容器。
这个后置处理器的工作时机非常关键 - 它在 AbstractApplicationContext.refresh() 方法的 invokeBeanFactoryPostProcessors() 阶段被调用,早于普通 bean 的实例化过程。这种设计保证了所有配置类都能在 bean 实例化前被正确处理。
重要提示:ConfigurationClassPostProcessor 本身也是一个 Spring bean,它会在容器启动的最早期通过 AnnotationConfigUtils.registerAnnotationConfigProcessors() 方法被注册到容器中。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 配置类解析全流程剖析
2.1 配置类识别阶段
Spring 首先会通过 ConfigurationClassUtils.checkConfigurationClassCandidate() 方法识别潜在的配置类。这里有个关键点:Spring 将配置类分为两种类型:
- Full 全配置类:标注了 @Configuration 的类,会通过 CGLIB 增强
- Lite 简化配置类:标注了 @Component、@ComponentScan、@Import 或 @ImportResource 的类
识别过程会检查类上的注解,并设置 bean definition 的 metadata 属性,为后续处理做准备。
2.2 配置类解析核心过程
解析工作主要由 ConfigurationClassParser 完成,其核心方法是 doProcessConfigurationClass()。这个方法采用递归方式处理配置类及其父类,主要处理以下内容:
- 成员内部类处理:检
