spring6源码阅读(一):梳理阅读思路

test源码地址: https://github.com/wenzhuo4657/springTest

1,获取源码

在github上搜索spring找到源码仓库,为了方便修改记录可以fork一个仓库

2,构建源码,

readme说明

提示1:构建时需要下载jdk24,但是运行使用jdk17就可以了。
提示2: 虽然wiki说明里要用命令行``,但是由于我没有安装所谓SDKMAN切换jdk版本,所以就用idea构建。

此外由于spring是gradle项目,所以推荐一下入门教程,

https://www.cnblogs.com/davenkin/p/gradle-learning-1.html

该blog很旧,但是作为入门还是不错的,大部分知识都是没问题的。

3,阅读思路

常见源码像是tomcat、mq等中间件可以从入口函数开始阅读,但是spring很显然并没有,所以我选择先理清不同模块的作用。然后阅读某一模块,或者从Releases 说明中根据New Features选择感兴趣的更新

核心基础
spring-core: 核心工具包、资源加载、类型转换、spring-jcl 日志桥。
spring-beans: Bean 定义、容器与依赖注入(DI)的实现。
spring-context: 应用上下文、事件、环境抽象、@Configuration、@ComponentScan、@Scheduled、@Async 等。
spring-expression: SpEL 表达式语言(配置、条件、数据访问中的表达式支持)。
spring-context-support: 额外集成与支持,如缓存抽象适配、邮件、Quartz 调度、模板引擎等。
spring-instrument: 类加载期/运行期织入与 Instrumentation(Load-time Weaving)支持。
spring-aop: 基于代理的 AOP 支持(声明式事务、缓存、切面拦截等基础)。
spring-aspects: 基于 AspectJ 的切面实现与集成(编译期/加载期织入选择)。

数据访问
spring-tx: 统一声明式与编程式事务抽象(平台无关)。
spring-jdbc: JDBC 模板、异常转换、事务集成、JdbcTemplate/NamedParameterJdbcTemplate。
spring-orm: ORM 集成(JPA/Hibernate 等)与 JpaTransactionManager 等基础设施。
spring-oxm: O/X Mapping(JAXB/Jakarta XML Binding、XStream 等)统一抽象。
spring-jms: 基于 Jakarta JMS 的消息访问模板与监听容器。
spring-r2dbc: 响应式关系型访问与事务(R2DBC),与 Reactor 生态配合。

Web 栈
spring-web: Servlet/非阻塞 HTTP 抽象、RestTemplate、客户端与服务端通用基础。
spring-webmvc: Servlet 栈的 MVC 框架(@Controller、@RestController、视图解析、拦截器、校验)。
spring-webflux: 响应式 Web 框架(@Controller/functional routing、WebClient 客户端、Reactor 驱动)。
spring-websocket: WebSocket/STOMP 支持,与 spring-messaging 协同实现消息编程模型。
spring-messaging: 通用消息抽象(Message、Channel、编解码、STOMP 支持),被 WebSocket 与集成场景复用。

测试
spring-test: 测试支持(@SpringJUnitConfig、@WebMvcTest、MockMvc、测试上下文框架、Mock 环境等)。
spring-core-test: 框架内部测试工具(一般不直接作为业务依赖)。

典型依赖组合
传统 MVC Web 应用: spring-webmvc (+ spring-web, spring-context, spring-beans, spring-core)
响应式 Web 应用: spring-webflux (+ spring-web, spring-context, spring-beans, spring-core, Reactor)
数据访问(阻塞): spring-jdbc or spring-orm + spring-tx
数据访问(响应式): spring-r2dbc + spring-tx
消息与集成: spring-messaging 或 spring-jms(JMS 场景)+ spring-tx(可选)
AOP/事务/缓存: spring-aop + spring-tx(事务)+ spring-context-support(缓存适配等)
posted @ 2025-09-15 17:19  wenzhuo4657  阅读(4)  评论(0)    收藏  举报