Spring Core 原理 专栏导览

专栏定位

本专栏聚焦 Spring Framework 核心原理——IoC 容器、依赖注入、AOP、Bean 生命周期、事务管理。Spring 是 Java 企业开发的事实标准框架,但大多数开发者只停留在”会用注解”的层面——@Autowired 为什么能自动注入?@Transactional 为什么有时候会失效?循环依赖是怎么被解决的?这些问题的答案都藏在 Spring 容器的源码中。

本专栏以 Spring Framework 6.x(对应 Spring Boot 3.x)为主要分析版本,从 IoC 容器的核心接口设计出发,逐层深入到 Bean 创建的完整流程、AOP 代理的生成机制、事务管理的传播行为,最后系统性地梳理 Spring 暴露的所有扩展点。

目标读者

  • 希望从”会用 Spring”进阶到”理解 Spring 内部运作”的中高级工程师
  • 需要基于 Spring 做框架开发、编写自定义 Starter 或扩展组件的架构师
  • 对设计模式在大型框架中的实际应用感兴趣的技术爱好者

专栏目录

序号标题核心内容
0101 Spring 全局架构——模块划分与核心设计理念Spring 的模块层次(Core/Beans/Context/AOP/TX/Web)、控制反转(IoC)的本质、面向接口编程与依赖倒置、Spring 的设计哲学
0202 IoC 容器——BeanFactory 与 ApplicationContext 的层次设计BeanFactory 的延迟加载 vs ApplicationContext 的预加载、DefaultListableBeanFactory 的核心地位、各 ApplicationContext 实现类的差异(Annotation/ClassPath/Web)、容器的刷新流程(refresh 12 步)
0303 Bean 的定义与注册——从 XML 到注解驱动BeanDefinition 的核心属性(scope/lazy/dependsOn/initMethod)、XML 解析(BeanDefinitionReader)、注解扫描(ClassPathBeanDefinitionScanner)、@Configuration 的 CGLIB 增强(Full 模式 vs Lite 模式)
0404 Bean 的生命周期——从定义到销毁的完整流程实例化(createBeanInstance)→ 属性填充(populateBean)→ 初始化(initializeBean)→ 销毁(destroyBean)的完整链路、Aware 接口回调的时机、InitializingBean/DisposableBean/init-method 的执行顺序
0505 依赖注入的三种方式与循环依赖的三级缓存解决方案构造器注入/Setter 注入/字段注入的对比、@Autowired 的候选匹配逻辑(类型→Qualifier→名称)、三级缓存(singletonObjects/earlySingletonObjects/singletonFactories)解决循环依赖的原理、构造器循环依赖无法解决的原因
0606 AOP 实现原理——JDK 动态代理与 CGLIBAOP 核心概念(切面/连接点/切点/通知/织入)、JDK 动态代理的 InvocationHandler 机制、CGLIB 的子类代理与 MethodInterceptor、Spring 选择代理方式的决策逻辑(proxyTargetClass)、AOP 代理链的执行顺序
0707 Spring 事务管理——声明式事务的传播行为与失效场景PlatformTransactionManager 的抽象、七种传播行为(REQUIRED/REQUIRES_NEW/NESTED 等)的语义与实现、事务失效的八大场景(同类调用/非 public/异常被吞/多数据源)、编程式事务 TransactionTemplate
0808 Spring 事件机制与观察者模式ApplicationEvent/ApplicationListener 的观察者模式、@EventListener 的注解驱动实现、事件的同步 vs 异步发布、Spring 内置事件(ContextRefreshedEvent 等)、事件在业务解耦中的应用模式
0909 SpEL 表达式与属性解析SpEL 的语法与能力边界、ExpressionParser 的解析流程、@Value 的属性注入原理、PropertySource 的优先级链、Environment 抽象与 Profile 机制
1010 Spring 扩展点全景——BeanPostProcessor、BeanFactoryPostProcessor 与 Aware 接口BeanFactoryPostProcessor(修改 BeanDefinition)vs BeanPostProcessor(修改 Bean 实例)的区别、各扩展点的执行时序、InstantiationAwareBeanPostProcessor 的实例化拦截、SmartInitializingSingleton 的全量初始化回调、自定义扩展的最佳实践

推荐阅读路径

入门路径:01 → 02 → 04 → 05 → 06

事务与 AOP 路径:06 → 07

框架开发路径:03 → 10 → 08 → 09

前置知识

  • Java 基础、反射与动态代理
  • 建议先阅读 OOP 设计模式 专栏了解工厂模式、代理模式、观察者模式、模板方法模式

关联专栏

  • Spring Boot:基于 Spring Core 的自动配置、Starter 机制
  • OOP 设计模式:Spring 大量使用工厂、代理、观察者、模板方法等模式
  • MyBatis:MyBatis-Spring 整合依赖 Spring IoC 容器
  • Dubbo:Dubbo 深度整合 Spring 的 Bean 生命周期和扩展点