概述

为了更好运行调试 Spring 整个执行流程,从 github 中 把 Spring 源码下载本地,并且用IDEA 运行调试和添加注释,方便以后回顾和学习,这篇文章总结一下 Spring5.x 源码环境搭建。

安装编译工具 Gradle

Spring 源码是通过 Gradle 管理工具进行管理的,而且每个版本对 Gradle 的版本要求是不一样的,此处编译的Spring源码为5.1.x,我使用的 Gradle 编译工具的版本为 gradle-5.6.4
参考我上一篇文章:IDEA 中配置 Gradle 和使用

从Github上下载Spring源码

下载 spring-framework5.1.x 源码

  1. 下载地址

https://github.com/spring-projects/spring-framework/tree/5.1.xhttps://github.com/spring-projects/spring-framework/tree/5.1.x

  1. 下载安装包Spring5.x 源码环境搭建(二) - 图1

IDEA 运行源码

解压后使用 IDEA 打开

导入步骤如下:file→new→Project form Existing SourcesSpring5.x 源码环境搭建(二) - 图2选择 Spring-framework-5.1x 项目Spring5.x 源码环境搭建(二) - 图3Spring5.x 源码环境搭建(二) - 图4Gradle 导入Spring5.x 源码环境搭建(二) - 图5Spring5.x 源码环境搭建(二) - 图6配置 gradle 环境Spring5.x 源码环境搭建(二) - 图7
然后等着 build 完成即可Spring5.x 源码环境搭建(二) - 图8
选择需要导入工程的模块,此处可以选择自己感兴趣的模块,或者全部导入。
Spring5.x 源码环境搭建(二) - 图9


编译完成,测试是否正确

写个测试类测试模块是否导入正确,在 spring-context 包的 test 包下创建两个测试类。如下:

TestConfig 类代码如下

  1. @Configuration
  2. public class TestConfig {
  3. @Bean
  4. public String name() {
  5. return "Hello World Spring.";
  6. }
  7. }

TestMain 类代码如下

  1. @Configuration
  2. public class TestConfig {
  3. @Bean
  4. public String name() {
  5. return "Hello World Spring.";
  6. }
  7. }

解决报错

然后运行,你会惊奇地发现,报错了,报的是符号找不到,类似于:internal.CustomizerRegistry找不到的异常。Spring5.x 源码环境搭建(二) - 图10
因为 IDEA 导入Spring 源码时,会进行自动编译,所以要把 spring-corebuild 文件清空一下就好,然后运行一下该模块下的test单元测试类,重新生成build 文件。Spring5.x 源码环境搭建(二) - 图11
在 IDEA 控制台输入如下命令
gradle clean build
说明

  • clean:是清空 spring-core build 文件
  • build:从新编译 spring-core 构建build文件

Spring5.x 源码环境搭建(二) - 图12
gradle build 编译项目比较慢,请耐心等待….
经过大概4分钟左右,重新刷新idea,发现没有错误了,重新运行刚才的测试类,可以正常输出了。Spring5.x 源码环境搭建(二) - 图13