Spring和Spring Boot2.0原始碼閱讀環境搭建和結構
一:Spring
第一步:安裝git和gradle,以及Java8,並配置環境變數。
第二步:開啟gitbash,cd到你要放置spring原始碼工程的目錄,輸入:git clone https://github.com/spring-projects/spring-framework.git 等待下載完畢。
或者下載指定的release版本解壓縮。
第三步:預編譯spring-oxm模組。官網說:Pre-compile spring-oxm
with ./gradlew cleanIdea :spring-oxm:compileTestJava
第四步:開始匯入工程,File->import project->選中spring-framework工程->import from external model->Gradle->finish經過一段時間專案匯入成功
第五步:設定project sdk為1.8,右鍵project->open module settings->sdks->點+號新建jdk1.8,找到jdk1.8的路徑,再選中project選項卡,設定project sdk為1.8
第六步:再建立一個簡單的spring-web專案模板,和spring其它模組放一起,通過main方法打斷點進行原始碼鑑賞。
二:Spring Boot
(1)github下載release版本原始碼或git clone相應的版本,地址:https://github.com/spring-projects/spring-boot
(2)cmd進入原始碼目錄,執行:mvnw.cmd clean install -DskipTests -Pfast
其中spring-boot-gradle-plugin專案使用jdk9,沒裝JDK9可以暫時先遮蔽
(3)idea 匯入專案
(4)最外層的pom中可能有如下問題:
${disable.checks} 識別不了,可以註釋掉相應的plugin
(5)spring-boot-project目錄下建立一個springboot專案模組,通過打斷點進行鑑賞。
三:Spring Boot2.0 程式碼結構
結構分析:
Spring-boot-project 核心程式碼,程式碼量很多(197508 行)
Spring-boot-samples 一些樣例 demo,程式碼量不多(9685 行),蠻有用的
Spring-boot-samples-invoker 裡面無程式碼
Spring-boot-tests 測試程式碼(1640 行)
spring-boot-project
Spring-boot-project 下面有很多模組,如下:
Spirng-boot
該模組 47760 行程式碼(含測試程式碼),Spring boot 主要的庫,提供了支援 Spring Boot 其他部分的功能,其中包括了:
在SpringApplication類,提供靜態便捷方法,可以很容易寫一個獨立的 Spring 應用程式。它唯一的工作就是創造並更新一個合適的 SpringApplicationContext
帶有可選容器的嵌入式 Web 應用程式(Tomcat,Jetty 或 Undertow)
一流的外部配置支援
便捷ApplicationContext初始化程式,包括對敏感日誌記錄預設值的支援