前言
想學習spring框架,不看原始碼怎麼行。網上有很多教程,但是自己實施起來還是稍微有點坎坷的,不過最後還是成功了。遂以此文記錄。
環境說明:
Idea 2017.2.5
spring-framework v4.3.9.RELEASE
gradle 2.12 (版本太高好像有問題)
原始碼下載
首先我們從github上克隆 spring的原始碼。
然後使用 git tag 命令檢視分支
我們將4.3.9.RELAESE 版本的程式碼下載到本地。
gradle 安裝這裡不在介紹。
開始匯入
我們開啟原始碼資料夾,開啟 import-into-idea.md
然後執行命令: gradle cleanIdea :spring-oxm:compileTestJava (以下是一個稍微漫長的過程~~)
好,看到 BUILD SUCCESSFUL 很開心~~然後我們按照文件中的做即可。
1. Pre-compile `spring-oxm` with `./gradlew cleanIdea :spring-oxm:compileTestJava`
2. Import into IDEA (File->import project->import from external model->Gradle)
3. Set the Project JDK as appropriate (1.8+)
4. Exclude the `spring-aspects` module (Go to File->Project Structure->Modules)
5. Code away
排除萬難
現實中當然沒有文件中那麼順利,首先編譯會出一些錯誤,沒關係。我們先新建一個測試專案。 然後 File =>Project Structure. 選中測試專案,新增Dependencies。
這裡要提一句,本來 common-logging我是沒有加的,後來就會報ClassNotFound。於是我在pom,xml引入就好了。
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency>
最終測試
測試程式碼很簡單:
public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); context.start(); UserService userService = context.getBean(UserService.class); String testResult = userService.getUserName(); System.out.println(testResult); }
然後執行,在原始碼中打個斷點,斷點命中:
好了,剩下的我就不多說啦,我該去研究原始碼了!!!
總結
整體而言還算順利,但是由於對modules不熟悉,所以中途遇到一些小問題。不過還好,算是解決了。希望文章對學習spring框架的你有所幫助。