參考 知識星球 中 芋道源碼 星球的源碼解析,一個活躍度非常高的 Java 技術社群,感興趣的小伙伴可以加入 芋道源碼 星球,一起學習😄
該系列文檔是本人在學習 Spring MVC 的源碼過程中總結下來的,可能對讀者不太友好,請結合我的源碼注釋 Spring MVC 源碼分析 GitHub 地址 進行閱讀
Spring 版本:5.1.14.RELEASE
該系列其他文檔請查看:《精盡 Spring MVC 源碼分析 - 文章導讀》
因為
spring-mvc
項目,是spring-framework
的子項目,所以需要拉取spring-framework
整個工程,包含 Spring 所有的子項目,本系列文檔只分析 MVC 相關模塊
依賴工具
-
Gradle 6.4
-
Git
-
JDK 1.8+
-
IntelliJ IDEA 2020.1.1
筆者目前使用的是 Windows 系統,如果使用的是系統版本是 MAC OS 或者其他 IDEA 版本,可能會遇到相關問題,需自行 Google 處理
可參考 Spring 官方提供的 import-into-idea.md 或者 import-into-eclipse.md 進行導入項目
源碼拉取
從 Spring 的 Git 倉庫 Fork
項目到自己的 Git 倉庫,方便我們在閱讀源碼的過程中,可添加相應的注釋后提交代碼,也可以直接拉取我的 Spring Framework 源碼分析 GitHub 地址 閱讀
由於 Spring 項目比較大,從倉庫中拉取代碼的時間會比較長,請耐心等待(也可以直接下載 ZIP 包,解壓后執行下述命令再導入 IDEA 中)
打開 IDEA Terminal ,輸入如下命令,預編譯 spring-oxm
項目:
./gradlew :spring-oxm:compileTestJava
在拉取項目的過程中很大的可能會遇到各種問題,別慌,依次解決即可
spring-framework
項目下,一共有四個和 web 相關的項目,大體關系如下:

可以看到 spring-webmvc
不是一個單獨的項目,他有依賴的 spring-web
父項目,也有兩個 spring-webflux
和 spring-websocket
兄弟項目
關於本次的 Spring MVC 源碼分析,僅分享 spring-webmvc
部分,如果對另外兩個 webflux 和 websocket 項目感興趣,可以自己 Google,因為筆者對它們還沒太多的接觸
代碼統計
通過 IDEA Statistic 插件,統計了 spring-webmvc
項目的代碼量,如下圖所示:code-statistic

可以看到總的 Java 代碼行數在 27763 行,Spring 的注釋行有點多,加上筆者添加的相關注釋以及其他空行等,所以總的行數會相對比較多,Java 代碼量還是有點多😢
本系列文檔不會分析spring-webmvc
所有的代碼,加上還需要分析 spring-web
中的相關代碼,所以挑選其中較為核心的部分進行分析,相對來說沒有那么復雜
關於 Spring 中的注釋率達到了 40% 左右,是非常值得學習的😈,不知道你有沒有遇到過前人留給你的坑,而且還是沒有任何注釋的代碼,是不是很頭疼,所以平時一定得有寫注釋的習慣,做一個“品德兼優”的程序員,哈哈~