缘起

最近在看Spring的源码,笔者准备写一个专栏,用于记录关于spring源码阅读过程中的心得和体会。

废话补多少,看源码之前首先是要搭建源码的运行环境,搭建运行环境大概分为以下几步。

步骤


  1. 安装git
  2. 安装Gradle
  3. 下载源码
  4. 导入到开发环境中

下面一步步介绍

安装GIT

spring源码现在是放在git hub中,故我们需要先安装Git,在windows下安装Git很简单,读者可以自行百度。

安装好了后可以采用Git命令 ​​git clone https://github.com/spring-projects/spring-framework.git​​ 的方式

如何搭建Spring源码的阅读环境_spring源码解析

如果不装git也是可以的,直接去git hub上下载源码便是。

如何搭建Spring源码的阅读环境_spring源码_02

spring源码在git hub上的地址:https://github.com/spring-projects/spring-framework

安装Gradle

由于spring是基于Gradle而非maven开发的,故还需要先安装Gradle.

​下载Gradle​

配置Gradle环境(MAC环境,windows自行百度)

进入到用户所在根目录,执行如下

vi .bash_profile
GRADLE_HOME=/Users/zhongguangxi/gradle-6.6.1
PATH=$PATH:$GRADLE_HOME/bin
export GRADLE_HOME GRADLE_USER_HOME PATH
source .bash_profile

把Spring源码导入到开发环境中(以Idea为例)

导入之后需要设置本地gradle路径

如何搭建Spring源码的阅读环境_git_03

设置jdk

如何搭建Spring源码的阅读环境_大家spring源码调试环境_04

如何搭建Spring源码的阅读环境_git_05

确定之后gradle会开始build项目,这一步会耗时比较长,请耐心等待,中间可能会报错


Could not get unknown property ‘classesDir’ for main classes of type org.gradle.api.internal.tasks.DefaultSourceSetOutput.


如何搭建Spring源码的阅读环境_git_06

如果报这个错,需要注意gradle的版本。截止2020年9月6日,spring所用gradle版本为6.6.1,这个版本的spring下载,为了防止后续spring版本变动,我自己fork了一份当前版本的


​https://gitee.com/nuoqian1/Spring-Framework.git​


再次强调,Gradle的版本一定要与spring源码中要求的一致,不然会报各种各样奇奇怪怪的错,我们可以在​​gradle-wrapper.properties​​文件中查看当前要求的gradle版本

如何搭建Spring源码的阅读环境_spring_07

开始调试代码

我们先new一个Module

如何搭建Spring源码的阅读环境_git_08

选择Gradle

如何搭建Spring源码的阅读环境_大家spring源码调试环境_09

输入Module的名字

如何搭建Spring源码的阅读环境_spring源码_10

完成后如下所示

如何搭建Spring源码的阅读环境_spring源码_11

我们在这个test项目里面引入spring-context用于调试

如何搭建Spring源码的阅读环境_spring源码解析_12

compile project(":spring-context")

接下来可以编写测试代码了

在test项目的resources目录下新建配置文件config.xml,代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="testIoc" class="com.test.TestBean"></bean>
</beans>

新建TestBean

public class TestBean {

public void helloSpring(){
System.out.println("Hello Spring");
}
}

新建测试类TestIOC

public class TestIOC {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
TestBean testBean = context.getBean(TestBean.class);
testBean.helloSpring();
}
}

运行TestIOC的main方法,即可看到输出

> Task :test:TestIOC.main()
Hello Spring

到此,说明spring源码阅读环境搭建成功

总结

spring源码的阅读环境搭建比较简单,首先是要安装gradle,然后是需要去下载spring的源码。

需要注意的是,gradle和jdk的版本问题,版本如果不对应spring,会导致构建失败