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