Spring mvc源碼分析系列--前言
Spring mvc源碼分析系列--前言
前言
距離上次寫文章已經過去接近兩個月了,Spring mvc系列其實一直都想寫,但是卻不知道如何下筆,原因有如下幾點:
- 現在項目開發前後端分離的趨勢不可阻擋。Spring mvc這一套裡面部分內容稍顯落後了,例如視圖部分可以說是耦合前端的邏輯,現在的後端也很少再會去寫jsp之類的東西。所以在現在看來,似乎是有一點落後於時代了。現在再去分析Spring mvc的實現,是不是有點吃力不討好。
- 項目開發中SpringBoot的廣泛使用。SpringBoot提供了很多開箱即用的特性,這大量屏蔽了底層的細節,包括了這裡想要分析的Spring mvc。那麼在不知道的細節也能用得很好的情況下,再扒開Spring mvc的底褲去分析,是不是還有意義。
- servlet聽起來似乎過於陳舊。然而很遺憾,Spring mvc的實現就是基於servlet,最核心的一個類
DispatcherServlet完成了大部分功能。所以現在去分析一個看起來很老舊的東西是不是還有價值。
不寫的理由有很多,但是偷懶了兩個月之後我還是決定寫這部分。既然只是部分內容稍微過時了,那就說明還有在繼續發光發熱的部分,那我就力求貼近現在的開發使用,取其精華。Spring mvc基於的servlet雖然是個老東西了,但是有些東西是歷久彌新的,如果一直沒有出現一個東西完全替代它,不就恰恰說明它做得很好么?不過現在webflux開始興起,servlet走向何方也未可知,至少在現在,它還在發揮著價值,值得一學。
在看Spring mvc這部分之前,需要掌握一些Spring的基礎知識,可以去看一下我之前寫的Ioc系列--Spring Ioc源碼分析系列和Aop系列--老生常談系列之Aop。其實看不看也無所謂,這部分比較簡單,用過Spring開發的看懂基本沒問題,有些細節可能不是很清楚的可以細看一下。
思路安排
本系列可能不只限於講Spring mvc,可能會把周邊關聯的也講一講,例如web伺服器Tomcat。
在這裡我先靈魂拷問一下:
- 瀏覽器的一個請求,是如何精確到達你的web伺服器里的業務邏輯里的,其中經歷的流程能說個所以然嗎?
- 我們一般用的web伺服器是Tomcat,那麼Tomcat給我們做了什麼?
- 它跟servlet又是如何關聯起來的?
- Spring mvc又做了什麼,提供了什麼便利?
這幾個問題看起來簡單,但是要說清楚,也不容易。可以簡單思考下。
那接下來就說說計劃的文章安排,可能最終會有出入,先安排如下:
-
Spring mvc與servlet的前世今生
-
web項目的啟動流程,以Tomcat為例,Spring mvc為我們提供了什麼,開發部署Spring mvc項目與純servlet的區別
-
Spring mvc源碼分析,這個可能會分幾篇去寫
-
SpringBoot內嵌Tomcat,SpringBoot時代,Spring mvc退居幕後,SpringBoot是如何做到了一鍵啟動
-
結束篇
總結
這篇文章就當是簡單開個頭,算是又立了flag。話不多說,準備開始填坑。
Spring mvc又是老話題了,我時常懷疑,總是寫別人已經寫過的東西,是不是真的有意義。我沒有得到答案,也許一條路不會因為前人走過了,後續的人再走就沒有意義了。
最大的意義可能就是一直走在路上。
如果有人看到這裡,那在這裡老話重提。與君共勉,路漫漫其修遠兮,吾將上下而求索。

