Spring源碼閱讀(一):使用IDEA搭建Spring5.0.x源碼閱讀環境


說明

Spring源碼閱讀環境配置如下:

  • Spring 5.x版本
  • Gradle 4.8.1
  • JDK8
  • IDEA2020.1
  • win10

搭建步驟

1. 下載Spring源碼

下載地址:Github鏈接,選擇5.x版本

如果Github下載過慢,可以使用碼雲加速,鏡像地址

另一種辦法是通過梯子配置代理,也可以加速下載

2. 配置Gradle

Spring基於gradle構建,需要先安裝配置Gradle

Gradle下載地址,選擇complete版本,下載后加入環境變量,通過gradle -v驗證是否配置成功

3. 構建項目

在進行預編譯之前,需要檢查以下幾個地方:

  • gradle.properties: 查看版本是否正確
  • jdk版本和gradle版本

在代碼目錄下執行命令:

gradlew :spring-oxm:compileTestJava

等待編譯成功。編譯過程可能遇到如下問題:

  • An exception occurred applying plugin request [id: 'com.gradle.build-scan', version: '1.8']

解決辦法:Gradle版本問題,具體原因參考此鏈接

Gradle Build Tool versions Minimum plugin version Maximum plugin version
>= 6.0 3.0 3.3.1
5.0 - 5.6.4 2.0.2 3.3.1
4.1 - 4.10 1.8 1.16
4.0 1.7.4 1.16
2.0 - 3.5 1.0 1.16
< 2.0 not supported not supported
  • org.gradle.api.CircularReferenceException: Circular dependency between the following tasks:
    :spring-beans:compileGroovy
    --- :spring-beans:compileJava
    --- :spring-beans:compileKotlin
    --- :spring-beans:compileGroovy (*)

解決辦法:循環引用問題,注釋掉下面三行

4. 導入IDEA

File -> New -> Project from Existing Sources -> 找到 Spring 項目路徑 -> 選中 build.gradle,並配置gradle,如下圖所示

接下來idea會進行很長時間的build,下載相關jar包,耐心等待即可

可能出現如下問題:

  • 缺少jar包:spring-cglib-repack-x.x.x.jar、spring-objenesis-repack-x.x.jar

解決辦法:在spring的解壓目錄下執行下面這兩個命令

gradle objenesisRepackJar
gradle cglibRepackJar

調試代碼

新建module,編寫自己的代碼,對spring代碼進行走讀。

關於module相關知識,可以參考另一篇文章:IDEA中Project和Module的關系

項目右擊,New->Module

當然也可以創建基於Maven的module,如下所示:

創建module子項目以后,需要添加module依賴,方便導入相關包。如下所示:

至此,可以寫代碼了。我們創建一個簡單的java bean,並打印。

Person.java:

public class Person {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
Beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   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-3.0.xsd">

	<bean id="person" class="org.wds.Person">
		<property name="name" value="zhangsan"/>
	</bean>
</beans>
Main.java:

public class Main {

	public static void main(String[] args) {
		ApplicationContext context =
				new ClassPathXmlApplicationContext("Beans.xml");
		Person obj = (Person) context.getBean("person");
		System.out.println(obj.getName());
	}
}

運行結果如下所示:

至此,環境搭建成功,可以通過打斷點對源代碼進行調試和走讀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM