该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读
Spring 版本:5.1.14.RELEASE
开始阅读这一系列文章之前,建议先查看《深入了解 Spring IoC(面试题)》这一篇文章
依赖工具
Gradle 6.4
Git
JDK 1.8+
IntelliJ IDEA 2020.1.1
笔者目前使用的是 Windows 系统,如果使用的是系统版本是 MAC OS 或者其他 IDEA 版本,可能会遇到相关问题,需自行 Google 处理
可参考 Spring 官方提供的 import-into-idea.md 或者 import-into-eclipse.md 进行导入项目
源码拉取
从 Spring 的 Git 仓库 Fork 项目到自己的 Git 仓库,方便我们在阅读源码的过程中,可添加相应的注释后提交代码,也可以直接拉取我的 Spring Framework 源码分析 GitHub 地址 阅读
由于 Spring 项目比较大,从仓库中拉取代码的时间会比较长,因为 Build 过程需要下载非常多的依赖,请耐心等待(也可以直接下载 ZIP 包,解压后执行下述命令再导入 IDEA 中)
打开 IDEA Terminal ,输入如下命令,预编译 spring-oxm 项目:
gradlew :spring-oxm:compileTestJava在拉取项目的过程中很大的可能会遇到各种问题,别慌,依次解决即可
spring-framework 项目下有很多子模块,核心模块:
spring-core:Spring 基础 API 模块,如资源管理、泛型处理
spring-beans:Spring Bean 相关,如依赖查找、依赖注入
spring-context:事件驱动、注解驱动、模块驱动等
spring-aop:Spring AOP 处理,如动态代理、AOP 字节码提升
spring-expression:Sping 表达式语言模块
这种面向模块开发方式,根据不同的功能进行划分,根据需求引入对应的模块即可,对于开发人员比较友好
代码统计
通过 IDEA Statistic 插件,统计了spring-core、spring-beans 和 spring-context 三个模块的代码量,如下图所示:code-statistic
可以看到总的 Java 代码行数在 100580 行,Spring 的注释行有点多,加上笔者添加的相关注释以及其他空行等,所以总的行数会相对比较多,感觉 Java 代码量具多,不过我们看核心内容就好了