Spring源码阅读环境搭建

准备工作

首先安装 Gradle并配置好环境变量。

image-20210801193755805

.gradle 文件夹下,一般位于用户目录下。(可以自定义修改,在环境变量中配置 GRADLE_USER_HOME 即可)

image-20210801194822584

Linux 用户

vim ~/.bashrc

# 添加
export PATH=<your GRADLE_USER_HOME>:$PATH

创建 init.gradle配置文件,指定国内镜像源。当然也可以在 setting.gradle中指定

image-20210801194549658

allprojects {
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            if (repo instanceof MavenArtifactRepository && repo.url != null) {
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

以上工作如果已经都配置请忽略,直接开始下面的操作。

GitHub克隆源码,我使用的 v5.3.9版本。也可以下载源码压缩包,但是必须进行一次 commit 否则会报错

git clone --branch=v5.3.9 --depth=1 git@github.com:spring-projects/spring-framework.git

预编译

根据 import-into-idea.md 的提示,我们需要进行预编译

  1. Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
  2. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
  3. When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
  4. Code away

在工程目录下运行 gradlew :spring-oxm:compileTestJava 等待差不多 3 分钟。如果无法科学网上,则会出现网络错误

image-20210801201556383

这个时候只需要将其版本6.8.3 提前下载好,然后复制到 GRADLE_USER_HOME/wrapper/dists/<gradle_version>/<hash>/ 下就可以

image-20210801201910338

再次执行 gradlew :spring-oxm:compileTestJava就可以了

image-20210801200544882

导入到IDEA

然后使用IDEA打开spring-framework目录等待 building。这个过程会比较久一点

image-20210801200800338

创建测试模块

等待 Build 完后创建一个新的模块,取名为 spring-demo 或者其他的名字

image-20210801203443336

创建好后我们在build.gradle中添加两个依赖以及配置阿里源

image-20210801204027657

创建启动类以及测试类

并且创建一个 AppConfig ,A , BMain 类。用于测试

public class Main {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
	}
}
@Configurable
@ComponentScan("org.spring.demo.**")
public class AppConfig {
}
@Component
public class A {
	@Autowired
	B b;

	public A() {
		System.out.println("bean A create");
	}
}
@Component
public class B {
	@Autowired
	A a;

	public B() {
		System.out.println("bean B create");
	}
}

然后运行 main方法,可以看到已经能够打印出 A 和 B的信息

开始阅读

然后就可以开始DEBUG模式开始阅读源码啦

image-20210801205715469

其他

  • Gradle: 6.5
  • JDK: 1.8
  • OS: windows10
  • IDEA: 2021.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值