Skip to content

Spring Framework

This content is not available in your language yet.

Spring Framework 的核心价值不是“提供注解”,而是把对象创建、依赖解析、生命周期回调、代理和资源访问组织成可扩展的容器协议。本册基于 main @ c7712052ce953722448967dc9c780fa959a08d48(2026-08-13)阅读。

Spring Framework 的核心不是“容器里有很多 Bean”,而是把对象创建、依赖装配、横切逻辑和资源生命周期组织成可扩展的流程。本册沿着一个 Bean 从定义到销毁的生命周期阅读:

  1. BeanDefinition 如何被解析成容器可以执行的计划?
  2. refresh() 为什么必须先准备后置处理器,再实例化单例?
  3. Bean 的实例化、注入、初始化和代理创建为什么有固定顺序?
  4. 循环依赖为什么需要三级缓存,为什么构造器循环仍然无法解决?
  5. AOP、事务和资源转换如何插入主流程,而不是硬编码进每个业务对象?
  6. 测试上下文为什么可以缓存,缓存失效时又由谁负责隔离?

读完整册后,应当能解释“一个带有依赖、AOP 和事务的 Bean 是怎样变成最终可用对象的”。

项 值
仓库 spring-projects/spring-framework
本地路径 E:\source\java\spring\spring-framework
分支 main
Commit c7712052ce953722448967dc9c780fa959a08d48(2026-08-13)
最近 tag v4.0.0.RC2(blobless 克隆中的祖先 tag,仅作参考)
问题 Framework 的解法
对象创建与业务耦合 BeanFactory 管理定义、实例化和依赖注入
生命周期扩展点分散 BeanPostProcessor、Aware、Initializing/Disposable 回调统一编排
横切逻辑侵入业务 AOP 将 Advisor/Interceptor 织入代理
资源和配置来源不一致 Resource、Environment、ConversionService 抽象底层差异
模块 关键职责
spring-core 资源、类型转换、环境、反射与基础工具
spring-beans BeanDefinition、BeanFactory、依赖解析与生命周期
spring-context ApplicationContext、事件、国际化与组件扫描
spring-aop Advisor、ProxyFactory、JDK/CGLIB 代理
spring-tx 事务属性、拦截器与事务管理器抽象
spring-web / spring-webmvc Web 基础设施与 MVC 请求处理
  1. AbstractApplicationContext#refresh():看容器启动的十几个扩展边界。
  2. AbstractBeanFactory#doGetBean():看缓存命中、作用域和依赖创建。
  3. AbstractAutowireCapableBeanFactory#createBean():看实例化、提前暴露和初始化。
  4. DefaultSingletonBeanRegistry#getSingleton():看三级缓存和并发保护。
  5. AbstractAutoProxyCreator#wrapIfNecessary():看后置处理器如何生成代理。
  6. TransactionAspectSupport#invokeWithinTransaction():看事务边界如何包住目标调用。
对象 对照点
Netty 都把复杂流程拆成可组合扩展点;Netty 的核心 owner 是 EventLoop,Spring 的核心 owner 是 BeanFactory
MyBatis 都通过工厂和后处理器隔离创建细节;Spring 负责对象图,MyBatis 负责会话和映射
Redis 源码 Redis 选择显式生命周期和单线程状态,Spring 选择可插拔容器协议