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

說明

Spring源碼閱讀環境配置以下:php

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

搭建步驟

1. 下載Spring源碼

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

若是Github下載過慢,可使用碼雲加速,鏡像地址git

另外一種辦法是經過fq配置代理,也能夠加速下載github

2. 配置Gradle

Spring基於gradle構建,須要先安裝配置Gradlespring

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

3. 構建項目

在進行預編譯以前,須要檢查如下幾個地方:bash

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

在代碼目錄下執行命令:app

gradlew :spring-oxm:compileTestJava
複製代碼

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

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

解決辦法:Gradle版本問題,具體緣由參考此連接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());
	}
}
複製代碼

運行結果以下所示:

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

相關文章
相關標籤/搜索