该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读
Spring 版本:5.1.14.RELEASE
开始阅读这一系列文章之前,建议先查看《深入了解 Spring IoC(面试题)》这一篇文章
该系列其他文章请查看:《死磕 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 代码量具多,不过我们看核心内容就好了:smile:
本系列文章是对 Spring IoC 进行分析,主要查看
spring-core
、
spring-beans
和
spring-context
三个模块。当然,这三个模块涉及到的东西也非常多,我不会对 Spring IoC 涉及到的所有内容进行分析,例如资源加载、国际化、数据绑定、类型转换等基础功能不会做过多的分析,了解即可。
本系列文章分享的内容主要围绕 Spring Bean 的生命周期和 Spring 应用上下文的生命周期展开,覆盖到 Spring IoC 大部分内容,相信这些文章会让你对 Spring 有一个更深的理解。