Spring原始碼解析之環境搭建

木木匠發表於2019-04-20

一、前言

作為了Java開發者,想要更高的提高自己,閱讀原始碼是邁不過去的坎,而Spring框架是java開發者使用的最多的框架之一,也是發展多年來沉澱出的優秀框架,裡面有很多巧妙的設計模式的實踐以及很多優秀的設計思想來值得我們學習,所以我打算寫一個Spring原始碼解析系列文章(給自己挖坑),雖然市面上已經有了大量分析Spring框架的文章,但是本人還是想以自己的理解儘可能的輸出詳細的原始碼解析,本篇文章是原始碼解析第一篇,主要進行Spring原始碼的閱讀環境的搭建和驗證。

二、環境搭建準備

2.1 安裝 Gradle

下載地址

Gradle是一個基於Groovy的構建工具,使用Groovy來編寫指令碼,支援依賴管理和多專案構建,類似於Maven。目前的版本是5.4,裡面包含了Windows,linux以及macOS多平臺的安裝步驟。 安裝並配置好環境變數後,在命令視窗輸入gradle -v輸出了版本號就表示安裝成功啦。

2.2 下載原始碼並編譯

GitHub原始碼地址

我們選擇5.1.6.Release分支,由於使用git clone比較慢,我們直接下載zip包進行解壓編譯,解壓後的目錄結構如下:

Spring原始碼解析之環境搭建

我們看到這個目錄下有兩個md檔案,根據名字我們可以知道這裡應該是告訴你匯入eclipse和idea的操作步驟,我們這裡就以IDEA進行演示。

在解壓後的spring目錄下執行命令:./gradlew :spring-oxm:compileTestJava(Windows環境下是執行gradlew.bat)。執行後會進行一段時間編譯,當出現如圖所示的結果後就表示編譯成功了。

Spring原始碼解析之環境搭建

2.3 匯入IDEA

編譯好原始碼後我們需要匯入到Idea中進行除錯,當然你也可以選擇eclipse進行除錯。

第一步:選擇import project ,然後選擇spring專案資料夾下面的build.gradle檔案,選擇後效果如下:

Spring原始碼解析之環境搭建

主要是配置好Gradle Home以及 JVM,其他的保持預設就可以了,點選ok就會進入專案,然後Gradle會進行相關的依賴包下載。

經過一段時間下載依賴包完成後,就需要排除 spring-aspects模組的包,因為它引入了未知的型別導致IDEA無法編譯, 選中該模組,右鍵--Load/Unload Modules ,把spring-aspects下的所有專案排除出去

Spring原始碼解析之環境搭建

到這裡,整個Spring原始碼的編譯和環境準備就完成了,接下來我們編寫一個demo來除錯一下,看看我們的程式碼是否沒問題。

三、Demo除錯

建立一個maven工程,由於我還是對maven比較熟悉,所以建立一個maven工程來除錯原始碼。我建立的目錄如下:

Spring原始碼解析之環境搭建
接下來去把新增依賴,我們準備先研究下spring-beans,所以先新增該依賴以及相關的依賴,我這裡是新增的原始碼,當然你也可以直接新增maven的jar包。

Spring原始碼解析之環境搭建

接著,我們建立一個Spring的小demo,載入一個bean的配置檔案,然後輸出結果,程式碼如下:

單元測試方法

    @Test
	public void  test(){
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		Person person= (Person) context.getBean("person");
		Assert.assertEquals("luozhou",person.getName());
	}
複製程式碼

Bean的POJO

public class Person {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
複製程式碼

配置檔案bean

<?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.xsd">

	<bean id="person" class="luozhou.beans.Person">
		<property name="name" value="luozhou"></property>
	</bean>
</beans>
複製程式碼

然後我們執行測試用例,輸出是綠色進度條,說明我們的程式碼是成功執行,也就證明了我們的demo以及原始碼都沒有問題。到此,我們的環境就算完全的搭建完畢並且驗證成功了,下一篇文章我們就可以開始進行Spring的原始碼分析之旅啦。

四、總結

本文主要說了如何搭建一個Idea下分析Spring原始碼的環境,因為Spring原始碼是通過gradle管理的,所以首先需要下載安裝gradle環境,然後去github上下載原始碼,接著根據解壓出來的檔案 import-into-idea.md 的安裝步驟進行編譯原始碼,原始碼編譯ok後進行匯入IDEA下,匯入後注意需要排除spring-aspects模組。

本文是全系列的第一篇,篇幅也是比較短,下一篇會開始正式分析原始碼,下一篇《Spring原始碼解析之IOC容器》將會詳細解析Spring中容器的實現,盡請期待。

相關文章