spring源码学习--1.调试环境配置
Spring框架号称是java开发工程师“春天”的框架,已经成为事实上行业标准的框架。其优秀的代码设计使用了大量的设计模式以及很多给人启发的大师的设计。由于工作背景从C语言切换到Java,且没有比较大型java项目的开发经验,所以决定学习一下Spring源码。
我自己也是还在Spring源码的学习过程中,以这个博客作为自己学习过程中的一个记录。首先是这一部分学习的第一个章节:
1.Spring debug环境配置
Spring源码学习的第一个拦路虎就是Spring源码debug环境的配置,我也是在间歇性高涨,长期颓废的情绪下,尝试了三次才最终搭建了一个可以使用的环境。在此前基础上也是查询了一大堆的资料,这边给出的建议就是:
自己不要轴,照着人家配置好的环境要求,一点不要变更。不管是gradle的版本、jdk的版本还是spring的版本、idea的版本都可能是你搭建不成功的理由。哈哈哈哈哈哈。。。。。。。
1.1 首先是我本地所有需要的工具以及版本:
(1)MacBook Air (这个就不强求了,因为我这手头就这一台电脑,使用windows只是idea的菜单按钮不太一样,以及工具的安装方式不太一样)
(2)Idea 社区版2021 (直接用最新的吧,网上查询资料说低版本的idea可能会影响编译,我这里直接使用的最新版本的idea,第一次重复
不要轴)
(3)Spring源码版本 5.3.8(此处直接使用git下载源码zip包就可以了,国外的github网速比较慢,可以直接使用国内的gitee地址下载,gitee每天都会同步github上的源码,所以不必担心源码不是最新的)
(4)jdk版本11.0.12 (虽说官网上说了可以使用jdk8以上的版本进行编译,但是第二次重复
不要轴,直接安装jdk11,后续会看到有一个必须使用jdk11才能过去的坑)
(5)gradle版本 6.8.3(这里gradle的版本不是随意选的,其实是Spring不同版本的源码会指定不同的gradle版本进行编译,所以还是那句话,
不要轴)
1.2 导入idea工程之前的准备工作:
准备工作:
1. jdk11下载:
下载地址可以使用如下地址,oracle官网下载太慢,而且需要账号。
不用谢我!!
华为云jdk各版本高速下载通道:https://repo.huaweicloud.com/java/jdk/
2. spring 5.3.8下载地址:
https://github.com/spring-projects/spring-framework/releases
3. gradle版本指定位置,以及配置从本地拿取gradle软件
前面说过spring源码对应的gradle版本是在配置文件中指定好的,需要使用对应的gradle版本才可以。具体指定的配置文件如下:
/Users/xxxx/code/
spring-framework-5.3.8/gradle/wrapper
我的spring源码下载位置是在
/Users/xxxx/code/spring-framework-5.3.8,在/Users/xxxx/code/spring-framework-5.3.8/gradle/wrapper目录下存在一个配置文件
gradle-wrapper.properties
配置文件内容如下:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
我们如果不进行配置,则会自动从distributionUrl指定的网址下载对应版本的gradle软件。我们可以看到spring-5.3.8对应的gradle版本就是gradle-6.8.3 如果我们不进行配置,则会从这个国外网站下载gradle,我们可以将这个配置值配置为我们本地的gradle压缩包,这样就不会从远端下载,而是直接使用本地指定gradle版本。
配置值如下:
distributionUrl=file\:///Users/xxxx/Desktop/tool/gradle-6.8.3-all.zip
4. gradle仓库下载地址配置:
同样的原因,由于spring依赖的jar包太多,工程起来之后,会从远端下载海量依赖,如果从国外下载依赖,那么时间太长甚至会掉线导致工程构建失败。我们可以将gradle依赖下载地址指定为阿里的依赖库,提高下载速度。
阿里仓库地址:https://developer.aliyun.com/mvn/guide

需要将这两个仓库地址添加一下:
具体需要修改的文件以及内容如下:
/Users/xxxx/code/spring-framework-5.3.8/build.gradle

/Users/xxxx/code/spring-framework-5.3.8/settings.gradle
5. 下载Kotlin插件
6. 在将Spring源码导入到idea之前,我们还有一些准备工作需要做。
在Spring源码中提供了导入ide开发工具的md文档,主要是这两个文件
我们将要导入的是idea,所以查看一下下面的md文件,文件中提到由于其它组件对于spring-oxm以及spring-core组件有依赖,所以我们需要提前编译这两个组件。

具体需要到这两个组件对应的代码目录下,执行如下gradle命令,完成这两个组件的预编译。
./gradlew :spring-oxm:compileTestJava
./gradlew :spring-core:compileTestJava
1.3 Idea导入Spring源码
1.采用下面方式导入工程

然后使用gradle方式导入源码

导入完成后,系统就会自动导入依赖
1.4 创建测试module测试我们编译的Spring源码是否可以正常调用
1. 由于我们的Spring项目采用的是gradle的方式进行编译,所以我们新建项目的时候,需要采用gradle的方式进行创建。
