准备工作
首先安装 Gradle并配置好环境变量。
在 .gradle
文件夹下,一般位于用户目录
下。(可以自定义修改,在环境变量中配置 GRADLE_USER_HOME
即可)
Linux
用户
vim ~/.bashrc
# 添加
export PATH=<your GRADLE_USER_HOME>:$PATH
创建 init.gradle
配置文件,指定国内镜像源。当然也可以在 setting.gradle
中指定
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
的提示,我们需要进行预编译
- Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
- Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
- When prompted exclude the
spring-aspects
module (or after the import via File-> Project Structure -> Modules)- Code away
在工程目录下运行 gradlew :spring-oxm:compileTestJava
等待差不多 3 分钟。如果无法科学网上,则会出现网络错误
这个时候只需要将其版本6.8.3
提前下载好,然后复制到 GRADLE_USER_HOME/wrapper/dists/<gradle_version>/<hash>/
下就可以
再次执行 gradlew :spring-oxm:compileTestJava
就可以了
导入到IDEA
然后使用IDEA打开spring-framework
目录等待 building。这个过程会比较久一点
、
创建测试模块
等待 Build 完后创建一个新的模块,取名为 spring-demo
或者其他的名字
创建好后我们在build.gradle
中添加两个依赖以及配置阿里源
创建启动类以及测试类
并且创建一个 AppConfig
,A
, B
和 Main
类。用于测试
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模式开始阅读源码啦
其他
- Gradle: 6.5
- JDK: 1.8
- OS: windows10
- IDEA: 2021.2