1 下載原始碼
1.1 fork原始碼
由于從github網路下載太慢,就直接在gitee下載了gitee原始碼鏡像,fork主要是為了可以添加注釋

2.2 下載原始碼
將fork的原始碼clone到本地
git clone https://gitee.com/Yezi-up/Spring-Framework.git
2.3 切換分支
因為本次查看的原始碼是基于5.2,所以先切換分支再匯入到idea
git checkout -b 5.2.x origin/5.2.x
2 匯入到IDEA中
2.1 直接通過IDEA匯入專案
第一次打開大概需要15-20分鐘

?
2.2 查看當前的版本
gradle.properties 中查看,我們編譯的版本為 5.2.19.BUILD-SNAPSHOT
version=5.2.19.BUILD-SNAPSHOT
org.gradle.jvmargs=-Xmx1536M
org.gradle.caching=true
org.gradle.parallel=true
3 使用原始碼并除錯
可以先修改專案的編譯和運行方式,默認是Gradle,使用這種方式可以直接運行 3.1 中的例子,如果換為 IntelliJ IDEA則會碰到一些問題,在 3.2 中是解決方式,
但是換成IntelliJ IDEA執行時會快很多

3.1 創建使用原始碼的應用
3.1.1 創建model為spring-example,并且添加spring-context參考
plugins {
id 'java'
}
group 'org.springframework'
version '5.2.19.BUILD-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
compile(project(":spring-context")) // 添加spring的依賴
}
test {
useJUnitPlatform()
}
3.1.2 注入容器中的bean
public class Student {
public String name = "zhangsan";
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
3.1.3 將Student注冊到ioc容器,并從容器中取出bean
public class Test {
public static void main(String[] args) {
// 實體化 ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(Student.class);
// 初始化 容器
applicationContext.refresh();
System.out.println(applicationContext.getBean(Student.class));
}
}
3.1.4 執行結果
- 使用gradle編譯執行,需要3秒多

- 使用Idea編譯執行,基本秒級,第一次會慢點??

3.2 執行時碰到的問題(只有編譯和運行方式換為IntelliJ IDEA會遇到)
- Kotlin: Language version 1.3 is no longer supported; please, use version 1.4 or greater.
由于對應的模塊的Kotlin版本太低,升級對應模塊的kotlin版本,看第二張圖

?

- 找不到變數符號 CoroutinesUtils,因為未編譯,導致找不到指定的類,類似的都可以按如下方式處理
找到對應的module,執行下test,這樣會重新編譯 看第二張圖,執行單元測驗會主動編譯

?

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379381.html
標籤:其他
