Spring 源码系列(3): Spring 整体架构与核心模块
·
一、为什么先讲架构
读源码最怕一头扎进 refresh() 里,结果迷失在几十个方法调用中,不知道自己究竟在哪一层。
先有一张「地图」,知道 Spring 由哪些模块组成、谁依赖谁、各自负责什么,后面每一步你才知道自己站在地基上、还是站在楼顶上。本篇就是这张地图。
二、Spring 的设计哲学
理解架构前,先记住三条贯穿始终的设计原则:
- 分层与模块化:每个能力拆成独立 jar(spring-core、spring-beans…),按需引入,互不绑架。
- 依赖倒置:上层依赖抽象(如
BeanFactory)而非具体实现,所以容器可替换、可扩展。 - 一切皆可扩展:通过
BeanPostProcessor、BeanFactoryPostProcessor、Aware、ImportSelector等钩子开放扩展点——这是 Spring 生命力的来源,后面进阶篇会专门汇总。
三、模块全景
下图按功能把 Spring 划分为五大组,箭头表示依赖方向。建议把它保存下来,每篇源码追踪时对照着看。
(配图:Spring Framework 模块全景 —— 上层模块均依赖核心容器,核心容器内部 context → beans → core)
五大分组一览:
- 核心容器 Core Container:
spring-core/spring-beans/spring-context/spring-expression - AOP 与 Aspects:
spring-aop/spring-aspects - 数据访问 / 集成:
spring-jdbc/spring-tx/spring-orm/spring-oxm/spring-jms - Web:
spring-web/spring-webmvc/spring-websocket/spring-webflux - Test:
spring-test
四、重点:核心容器的依赖关系(本系列地基)
这是整个系列的地基,必须吃透。四个模块自底向上:
- spring-core:最底层,提供通用工具(
ClassUtils、Assert、资源加载Resource等)。所有模块都依赖它,它不依赖任何其他 Spring 模块。 - spring-beans:定义
BeanDefinition、BeanFactory、BeanWrapper,是 IoC 的基石。依赖spring-core。 - spring-context:在 beans 之上提供
ApplicationContext(IoC 门面),并加上事件发布、国际化、资源加载、校验等企业级能力。依赖spring-beans、spring-core,以及spring-expression。 - spring-expression:SpEL 表达式语言,被 context 用来解析
@Value、属性占位符等。依赖spring-core。
依赖方向一句话:context → beans → core,越往下越基础,上层始终依赖下层。
五、高频模块一句话职责
spring-core:工具箱,啥都用的底层支撑。spring-beans:Bean 的定义与工厂,IoC 内核。spring-context:IoC 门面 + 企业级能力(事件 / 国际化)。spring-aop:AOP 核心(Advice/Pointcut/ProxyFactory)。spring-jdbc/spring-tx:JDBC 模板与事务抽象。spring-webmvc:MVC 实现(就是DispatcherServlet那一套)。spring-test:与 JUnit 等测试框架的集成。
六、和我们系列路线的对应
- 准备篇(本篇):建立地图
- IoC 核心篇:主要落在
spring-beans+spring-context - AOP 篇:落在
spring-aop - MVC 篇:落在
spring-webmvc - Boot 篇:在
spring-context之上做自动配置 - 事务篇:落在
spring-tx - 进阶篇:横跨各模块的扩展点
看到没?80% 的源码系列其实就围着 beans + context 转。把这两个摸透,其余都是在此之上的扩展。
七、小结
记住一句话:Spring 是一组分层的模块,核心容器是所有能力的地基,ApplicationContext 是绝大多数开发者打交道的大门。
下一篇我们正式钻进 IoC,从最核心的一个问题讲起:BeanFactory 与 ApplicationContext 到底差在哪。
如果这篇对你有帮助,欢迎 点赞 · 收藏 · 关注 三连支持。
Spring 源码系列共 30 篇,由浅入深持续更新中。有疑问或想深挖的源码点,评论区告诉我,下篇见。
更多推荐




所有评论(0)