弄了半天终于配置好了Spring源码环境,经历了很多坑,现在把我的配置过程记录一下
@
关于编译工具
这里推荐大家使用idea来学习Spring源码,一个好的工具对于我们学习Spring源码是很好的帮助的,大家最好使用较新的idea,因为新版本有一些比较好的功能用来学习源码。这对我们学习源码来说无疑于事半功倍。
这里提供我当时参考的idea安装教程
JDK配置
我的JDK版本是1.8.0_131,大家的JDK至少要1.8及以上
下载Spring源码
因为github的下载速度较慢,大家可以从gitee上下载
https://gitee.com/mirrors/Spring-Framework
这里我选择5.2.x 的版本下载
git clone git@gitee.com:mirrors/Spring-Framework.git
Gradle环境配置
确定gradle版本:
我们需要去到spring源码根目录gradle\wrapper下的gradle-wrapper.properties文件中进行查看
可以看到我们这个版本的Spring对应的gradle是5.6.4
下载gradle
下载地址:
https://services.gradle.org/distributions/
在里面找到对应的gradle版本,点击下载即可
配置环境变量
下载后解压,复制解压后的地址
添加系统环境变量
#变量名
GRADLE_HOME
#变量值:你的gradle的解压地址
K:\gradle-5.6.4
找到path环境变量,点击编辑
然后新建
%GRADLE_HOME%\bin
然后打开cmd,输入gradle -v,如果出现版本号即为配置成功
最后,我们还可以修改一下gradle库的位置,否则会统一下载到c盘
新建系统环境变量
#变量名
GRADLE_USER_HOME
#变量值(更改为你自己的路径)
I:\gradle_repo
Spring源码配置
1、调整读取gradle文件的路径
将下载的gradle-5.6.4-bin.zip文件复制到spring源码根目录gradle\wrapper\ 下
修改spring源码根目录gradle\wrapper\gradle-wrapper.properties文件
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=gradle-5.6.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
将distributionUrl更改即可
配置idea
我们需要在idea的设置中,更改一下gradle的库位置
IDEA导入Spring项目
直接选择你的项目
导入成功后,可以看到大概的源码结构
导入后,在IDEA右侧你会看到一个Gradle工具栏,点开后看到如下信息,然后找到如下位置,点击进行build
成功后,即可看到如下信息
排除spring-aspects模块
因为spring-aspects模块在编译时是依赖ajc编译器的,如果不移除的话,它里面的类是会爆红的
添加测试模块
添加gradle模块
按下面截图所示步骤可以快速创建一个基本的gradle模块。
修改build.gradle文件
模块创建好之后只有一个build.gradle文件,可以在里面添加需要调试的模块,如下:
plugins {
id 'java'
}
group 'org.springframework'
version '5.2.20.BUILD-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
// ========= 添加调试模块 start ===========
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-context"))
compile(project(":spring-webmvc"))
compile(project(":spring-jdbc"))
compile(project(":spring-orm"))
compile(project(":spring-tx"))
compile(project(":spring-web"))
// ========= 添加调试模块 end ===========
testCompile group: 'junit', name: 'junit', version: '4.12'
}
添加代码
然后添加代码,构建成如下图结构:
MyAppContext
import com.wcl.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyAppContext {
public static void main(String[] args) {
//这里对应你的xml配置文件
ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) context.getBean("user");
user.hello();
}
}
User
package com.wcl;
public class User {
public void hello(){
System.out.println("hello spring...");
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="user" class="com.wcl.User" />
</beans>
运行
显示如上,即为运行成功,接下来就可以快乐地学习Spring源码了
bug解决
我当时删除了一个自己创建的module,结果运行其他的module却包了找不到我删除的module的错误
后面发现,要在Spring根目录下,找到settings.gradle文件,删除对应的配置才行
参考链接
https://blog.csdn.net/MarkusZhang/article/details/109694812
评论区