Spring MVC 過時了嗎?
Spring 定義自己是一場 Reactive Revolution,這場思想革命波及 Web 開發的全棧,資料庫=>伺服器=>前端。
所以,此時想一下 Spring MVC 是否過時是個很有意思的問題。它仍是最主流最成熟的 Java 伺服器端 MVC 框架,但它並不代表 Web 進化的方向。
然而,我們不斷學習新技術、不斷提高自己能力的目的是什麼?可能有一小撮人單純追求技術帶來的快樂,但是以我個人的觀察經驗,大部分人是為了找到更好的工作、拿到更高的薪資。
既然是這樣,Spring MVC 就是一門實用的技術。
01
為什麼還要學 Spring MVC
關於 Spring MVC 技術的招聘資訊
開啟 Boss 直聘、智聯招聘等網站,搜尋 Java 相關的崗位,大部分招聘資訊的任職要求如下圖所示:
上面幾則招聘資訊表明,如果去應聘 Java 開發工程師的崗位,無論是初級開發師,還是有一定經驗的中高階開發師,多多少少需要掌握 Spring MVC 框架技術。由此看來,我們不能僅僅掌握 Spring MVC 的基本用法就可以了,更需要深入瞭解它,以便更好地適應企業的開發需求,同時提升自我價值。
Spring MVC 的重要性
作為當前流行的 MVC 框架,Spring MVC 框架的優點就不再贅述了,同時它是 Spring 框架體系的一個分支產品,以 Spring IoC 為基礎,並利用容器的特性來簡化其配置。Spring 是 Java 開發領域非常重要的框架。
現在 Spring Boot 很流行,Spring MVC 還有必要學嗎?相信這也是很多朋友們的疑問,那我們就來談談為什麼要學 Spring MVC 吧。
02
什麼是 Spring Boot
首先,Spring Boot 是現在比較流行的框架,可以實現快速開發,包括我自己也在用它開發專案。其優點是簡化了 Spring 相關元件的配置,實現自動配置,降低了專案搭建的複雜度,使開發變得更加簡便,從而提升開發效率。Spring Boot 本身並不提供 Spring 框架的核心特性以及擴充套件功能,只是用於快速、敏捷地開發新一代基於 Spring 框架的應用程式。
Spring Boot 並不是用來替代 Spring 的解決方案,而是和 Spring 框架緊密結合用於提升 Spring 開發者體驗的工具。同時它整合了大量常用的第三方庫配置,如 Jackson、JDBC、Mongo、Redis、Mail 等,Spring Boot 應用中這些第三方庫幾乎可以零配置的開箱即用(out-of-the-box),大部分的 Spring Boot 應用都只需要非常少量的配置程式碼,開發者能夠更加專注於業務邏輯。
也就是說,Spring Boot 只是起到一個承載的作用,輔助你簡化專案搭建的過程。如果承載的是 Web 專案,使用 Spring MVC 作為 MVC 框架,那麼整個業務工作流程還是由 Spring MVC 來完成的,因此 Spring Boot 並不能替代 Spring MVC,它只是簡化了 Spring MVC 的相關配置,Spring Boot 幫你完成了很多底層工作。
03
Spring Boot 還是 Spring MVC
這裡你可以能會有這樣的疑問,既然使用 Spring Boot 可以簡化 Spring MVC 的配置,開發起來更加快捷方便,那就用它就好了,為什麼要學 Spring MVC ,放著簡單的東西不用,非要去用複雜的東西呢?
這個問題需要因人而異,如果你是一個開發經驗豐富、對 Spring 框架體系產品原理都非常瞭解的老司機,那不用說,肯定推薦你使用 Spring Boot。但是如果你是一個經驗尚淺,對 Spring 框架體系不是很瞭解的開發者,過於簡化的東西對你來說不見得是一件好事,簡單的背後其實是隱藏了其中的學習曲線,在不需要了解 Spring MVC 原理的情況下就使用其進行開發,這叫知其然而不知其所以然,不是正確的學習方式。
Spring Boot 的優點是框架幫你遮蔽了很多底層操作,可以完成快速開發,但任何事情都有兩面性,它遮蔽了底層操作的同時也遮蔽掉了你對於底層原理的理解和學習,假如只會簡單的使用框架,一旦遇到較為複雜的問題,一定是一臉懵逼。
若不懂原理,是無法解決問題的,你只知道 Spring Boot 自動完成了一些操作,但是對於它究竟完成了哪些操作渾然不知,想想看,這樣的方式真的有利於自我提高嗎?除非你想一輩子搬磚,不考慮做一些底層架構或者更深層次的工作。
就好比一個賽車愛好者,如果僅僅是駕駛技術好,那永遠只能是個票友;如果想成為真正的高手,一定是需要自己對賽車進行不斷地除錯改裝,直至效能達到車子的極限。那如果連汽車的結構都不瞭解,只會開車,又怎麼能完成車輛的效能優化和改裝呢,因此,不但要駕駛技術一流,還要懂得賽車的內部原理,才能成為真正的老司機。
寫程式碼也是一樣,如果僅僅停留在使用快速開發框架完成專案,而不去鑽研探究底層原理的話,永遠也不會有質地提高,只會調方法堆邏輯。在沒有夯實底層體系的情況下,一味追求敏捷高效,欲速則不達。
04
深度學習能力決定你的高度
這就是為什麼很大一部分程式設計師都會擔憂所謂的三十歲瓶頸期,但是你會發現牛逼的人一直很牛逼,二十多歲牛逼、三十多歲更牛逼,沒有什麼瓶頸,為什麼會有這種差距,其中有一個很大的原因就是深度學習能力的差別,你永遠停留在表面應用層,又怎麼能夠提高自己深度學習的能力呢,因此很多工作五六年的程式設計師和剛畢業的學生沒有多大區別,無非是磚搬的更快一些而已。
如果不想一直搬磚,如果想提高自己的價值,那就不要只停留在應用層,多去關注應用層下面隱藏的內容,Spring MVC 也是框架,它也遮蔽了很多東西,這就是我們為什麼要用 4 篇文章來介紹 Spring IoC 的原因,同時我也會手寫一個 Spring MVC 框架,讓大家更清晰的探究其底層原理。
當然,無論是 Spring Boot 還是 Spring MVC,包括 Java 語言本身在整個體系中都是應用層的東西,所以一直提倡大家去學習資料結構演算法、計算機原理,包括計算機網路,只有底層架構紮實了,才會拔得更高,這是一種思維模式。
如果想更多瞭解 Spring MVC 的底層原理,學習探究框架底層原理的方法,可以來看看我的系列文章,已經整理成《案例上手 Spring MVC》這門課程。
▼掃碼免費試讀了解
Spring MVC 是我個人在開發 Web 應用時的不二之選。回想起幾年前開始學習 Spring MVC 技術的時候,苦於網上沒有太多詳細且實用的教程,大多泛泛而談、偏理論而輕實踐,或者只是講解了 Spring MVC 的部分常用功能,內容不夠完整。
自己在學習摸索的過程中遇到了很多問題,也踩過很多坑,這對於初學者來說,是效率非常低的一種方式。我們在競爭如此激烈的行業中,最應該追求的就是高效率,寫程式碼也罷、學技術也罷,都是這樣,只有做到事半功倍才有更多時間和精力去學習新技術,從而進一步提高自己的能力。
GitChat 作者
寧楠:資深 Java 開發工程師、技術公眾號原創博主、知識星球常駐嘉賓、講師。曾任某大型網際網路公司高階工程師,技術總監、創業公司 CTO。
點選閱讀原文,或識別上方海報二維碼試讀了解!
相關文章
- Spring MVC實現過程淺析SpringMVC
- 面試問爛的 Spring MVC 過程面試SpringMVC
- Spring MVC 啟動過程原始碼分析SpringMVC原始碼
- spring - mvcSpringMVC
- spring、spring MVC、spring BootMVCSpring Boot
- 《莎木3》真的是“設計過時”了嗎?
- 《今天面試了嗎》-Spring面試Spring
- spring mvc interceptorsSpringMVC
- spring - mvc - @ScheduledSpringMVC
- spring - mvc - @ValidSpringMVC
- Spring Boot + Mybatis + Spring MVC環境配置(四):MVC框架搭建Spring BootMyBatisMVC框架
- 今天你過節了嗎?
- Spring MVC學習SpringMVC
- Spring5 MVCSpringMVC
- Spring MVC基礎SpringMVC
- Spring MVC1SpringMVC
- Spring MVC 簡述SpringMVC
- Spring MVC應用SpringMVC
- tomcat + spring mvc原理外傳:spring mvc與前端的糾葛TomcatSpringMVC前端
- 你好奇過 MySQL 內部臨時表存了什麼嗎?MySql
- 考慮時區了嗎?
- Problem C: 你過線了嗎?
- Hadoop將過時了?Hadoop
- Spring MVC ControllerAdvice深入解析SpringMVCController
- Spring MVC 入門程式SpringMVC
- Spring MVC for beginners 筆記SpringMVC筆記
- 深入淺出Spring MVCSpringMVC
- spring mvc 快速入門SpringMVC
- Spring MVC 解析之 DispatcherServletSpringMVCServlet
- Spring Mvc原理分析(一)SpringMVC
- Spring MVC 面試題SpringMVC面試題
- Spring 系列(二):Spring MVC的父子容器SpringMVC
- Spring 學習筆記(3)Spring MVCSpring筆記MVC
- Spring MVC原始碼(一) ----- 啟動過程與元件初始化SpringMVC原始碼元件
- Supercell的時代過去了嗎?
- Spring MVC 到 Spring Boot 的簡化之路MVCSpring Boot
- Spring系列(七) Spring MVC 異常處理SpringMVC
- Spring MVC和Spring Boot的區別 - hackernoonMVCSpring Boot