MacOS 使用IDEA阅读源码并调试
1.资源准备
jdk版本: 1.8.0_181
idea版本: 2019.1
gradle版本: 6.7.1
2.git clone 配置
这里要先配置一下域名映射来解决下载速度慢的问题:
原因:git clone特别慢是因为github.global.ssl.fastly.net域名被限制了。
解决:只要找到这个域名对应的ip地址(IP一直在变获取最新的),然后在hosts文件中加上ip–>域名的映射,刷新DNS缓存便可
注意:域名要填对,区分大小写,我看有的文章给的是github.global.ssl.fastly.Net,和github.global.ssl.fastly.net的IP是不同的,前者我试过没有效果。
- 1. 打开终端分别输入一下命令:
151.101.76.249 github.global.ssl.fastly.net
192.30.253.112 github.com
-
如图:
- 2. 复制这两个IP,打开/etc/hosts文件将下列配置添加带hosts文件最后,保存:
Command + shift + G 组合键
注意:hosts文件不能修改,需要先copy一份,修改之后然后再将原来的替换掉
- 3. 刷新DNS缓存:
sudo dscacheutil -flushcache
配置后速度到达1M多,跟网速也有关系,也不会下到一半报错。
3.源码下载
打开终端输入:
sudo git clone https://github.com/spring-projects/spring-framework
等待下载完解压即可
4. 下载Gradle
- 特别说明:因为spring源码和gradle有版本一致性的问题,所以要下载和spring源码相匹配的版本。
1.我们打开下载好的源码文件夹
2. 打开查看spring源码对应的gradle的版本
3.进入官网下载仅二进制即可
4. 配置环境变量
打开终端输入:
vim .bash_profile
进入到解压完的Gradle文件,指定bin文件夹,复制路径,配置环境变量
输入 i 编辑 、esc退出编辑 、 :wq 保存退出
激活配置:
查看版本
5. 源码预编译
1.进入spring源码根目录下执行(授权):
sudo chown -R $USER /projectdirectory(这里就写你项目的目录)
2终端输入:
./gradlew :spring-oxm:compileTestJava
等待即可
6.开始导入
可以看下:github提供的已知问题.
修改spring源码根目录中的gradle.properties文件
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
1.File -> New -> Project from Existing Sources -> 找到选择spring-framework源码
2.配置项目用本地的gradle,不用idea自带的
3.这个时候idea就开始自动build了,等待即可
4.build结束
5.我这里spring-aspects的模块已经排除
大家可右击spring-aspects模块 -> Load/Unload Modules->Unload 即可
6.创建test Moudles
拷贝spring-test的gradle配置到sping-debug中进行覆盖,并修改描述为Spring Debug
在spring-debug中创建测试类
package com.dongcl.bean.test;
/**
* 类描述:
* @className MyTestBean
* company 赛拓信息技术有限公司
* @author DongCL
* @date 2020-12-31 09:35
*/
public class MyTestBean {
private String testStr = "testStr";
public String getTestStr() {
return this.testStr;
}
public void setTestStr(String testStr) {
this.testStr = testStr;
}
}
创建bean配置文件
创建测试类
选中 -> GoTo -> Test
OK
在测试类中写入测试信息:
package com.dongcl.bean.test
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.BeanFactory
import org.springframework.beans.factory.xml.XmlBeanFactory
import org.springframework.core.io.ClassPathResource
class MyTestBeanTest extends GroovyTestCase {
@Test
void testSimpleLoad() {
BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));
MyTestBean bean = (MyTestBean) bf.getBean("myTestBean");
assertThat(bean.getTestStr()).isEqualTo("testStr");
}
}
Debug模式 运行
本文地址:https://blog.csdn.net/weixin_43650943/article/details/112003259