javascript
Spring MVC+ Spring + Mybatis “三大框架”介绍
為什么要使用框架?
對于絕大部分 JavaWeb 開發者來說,開發的第一個項目應該都是以 JSP 或者 JSP+Servlet 形式完成的項目,之后陸陸續續、大大小小的項目應該也是以此為基礎進行開發,當你看到你一個個完美的作品竣工完結之時,心滿意足之余你可能會有這樣一種疑惑,明明使用 JSP+Servlet 技術就可以完成的項目為什么要使用各種框架?
首先,這些項目只是學習過程中的練習項目,其次,這些項目是個人項目并不是企業應用,學習 JavaWeb 開發的目的是企業級應用的開發,閉門造車的思維模式不可取。一個中小型項目全部使用 JSP+Servlet 進行開發和維護,其成本就會很高,更不用說大型項目了,那簡直就是一個災難,開發成本、迭代成本、維護成本將會更高。真實的企業應用開發有幾個比較重要的關注點分別是:代碼復用、標準化、可維護性、開發成本,JSP+Servlet的封裝和抽象程度與框架相比起來就毫無優勢可言了。
-
代碼復用:框架的封裝和抽象程度較高,企業開發中的很多功能都做了相應的實現,例如 JDBC、請求分發、對象管理、事務管理等底層代碼,如果不使用框架而選擇自己開發的話,代碼量著實不小,框架的使用為開發人員減少了大部分的編碼工作,提升開發效率。
-
標準化:對于上述的功能,如果沒有使用框架,每個企業應該肯定會有自己的封裝。各企業封裝的思路不同及業務場景的不同也會導致或大或小的差異性,這將給員工帶來比較大的學習成本。從一家公司換到另外一家公司,需要重新學習使用公司內部的框架,這種做法往往會加大學習成本。而使用框架,上述的問題將不復存在,大部分公司都在用這套框架和這套框架下的開發模式,最終產生一個大家都接受的標準化流程,框架實際上也是一種規范,可以讓每位開發人員保持類似的開發風格和開發方式。
-
可維護性:代碼復用程度高、開發流程的規范化和標準化帶來的就是開發效率的提升;框架的引入也使得代碼分層更加清晰,底層技術細節的封裝,使得開發人員的關注點更加傾向于具體業務上;這些原因會使得企業應用擁有更優秀的可維護性。
其實,說得簡單點,當優秀的框架逐漸成為趨勢、成為標準之時,開發者的學習成本降低了,同時也減少了開發者的重復編碼工作,簡化開發,加快開發進度,降低維護難度。
“三大框架”
談到框架之時,我相信你的腦海中會迅速出現一個詞語——“三大框架”,每個 JavaWeb 學習者對該詞肯定都印象深刻。開始接觸 Java 開發框架時,這個詞語也就隨之深刻在腦海中,因為周圍的開發者乃至自己都會時常提到它。
“三大框架”已成為大家接受的叫法,在進入公司后,隨著開發經驗的增長,“三大框架”被提到得越來越少了。伴隨著可使用的優秀框架越來越多,已經不止是“三大框架”了。“三大框架”的每一種技術,雖然是獨立的技術,用于企業級應用開發時又是緊密結合在一起,并不孤立,“三大框架”主要用來開發 Web 應用,分別負責 MVC 開發模式下的不同模塊功能。
這個詞語所代表的含義也不是固定的,我初學 JavaWeb 開發時,“三大框架”代表的是 SSH(即 Spring、Struts2、Hibernate),而在今天,“三大框架”已經逐漸過渡成為 SSM(即 Spring、SpringMVC、MyBatis),本課程選擇的技術即為 Spring+SpringMVC+MyBatis。
狀態火熱的 SSM 技術棧
我們可以登錄幾大招聘網招,看看企業 JavaWeb 相關崗位的招聘文案,通過招聘信息中的要求得出以下結論:
SSM 這套技術棧是絕大部分公司明確要求掌握的技術,而 SSM 的組合搭配已經漸漸成為 JavaWeb 開發者必備的技能,雖然不是全部,但仍是目前的主要趨勢,掌握 SSM 技能棧刻不容緩。
由此可以看出 SpringMVC+Spring+Mybatis 技術棧有著很高的受歡迎程度!那么,SpringMVC+Spring+Mybatis 到底有多么火熱呢?我找出了一些數據給大家展示一下。
此圖來自于百度指數,我在2018年6月14日查詢了 SSM 關鍵詞的數據,從圖中可知,自百度指數有數據統計以來,SpringMVC+Spring+Mybatis 的搜索指數一直很高,自2011年至2018年也一直呈現連年穩定增長的趨勢,近四年的搜索指數也一直保持在一個極高的水平上。
也找了其他幾組數據進行對比:
以上兩張圖片同樣來自于百度指數,分別為近幾年比較火熱的技術和話題:大數據、Docker 技術,這兩個詞語的火熱程度應該不用我多說,唯有炙手可熱來描述了。三張圖片結合觀察,同大數據和 Docker 相比起來,SSM 也絲毫不落下風!十分穩定的保持在一個極高的水準之上。
一直增長、搜索指數數值極高、且極其穩定,這些狀態加在一起,如果要找一個合適的詞語來形容的話,那就只能是恐怖了!一時風頭無兩的 SSM 技術棧!?我近兩年也一直在做關于 Spring+SpringMVC+MyBatis 的技術文章分享,因此本達人課選擇的主要技術棧仍為 Spring+SpringMVC+MyBatis,下面將分別對其進行介紹。
Spring
Spring 是一個輕量級的企業級應用開發框架,于2004年由 Rod Johnson 發布了1.0 版本,經過多年的更新迭代,已經逐漸成為 Java 開源世界的第一框架,Spring 框架號稱 Java EE 應用的一站式解決方案,與各個優秀的 MVC 框架如 SpringMVC、Struts2、JSF 等可以無縫整合,與各個 ORM 框架如 Hibernate、MyBatis、JPA 等也可以無縫銜接,其他各種技術也因為 Spring 的存在而被很容易地整合進項目開發之中,如 Redis 整合、Log4J 整合、ElasticSearch 整合、RabbitMQ 整合、Quartz 整合、Thymeleaf 整合等等,只要你開發中需要使用到的技術,Spring 都提供了極好的封裝和整合體驗,這也是為何 Spring 生命力如此強大的原因,暫時還沒有能夠替代 Spring 的框架出現。
Spring 框架提供約20個模塊,如下圖:
Spring 框架并不強制應用完全依賴于 Spring,開發者可自由選擇需要的模塊。
總結起來,Spring 框架有如下優點:
- Spring 的 IOC 容器將對象之間的依賴關系交由 Spring 控制,提高了組件之間的解耦,簡化 Java 開發;
- 面向切面編程,Spring AOP 是面向對象編程(OOP)的一種補充,通過這種方式將系統中的一些通用任務提取出來進行單獨處理,比如事務處理、日志模塊、權限控制、性能監控等,避免大量的代碼重復,使得代碼更加簡潔,復用性更強,也幫助開發人員更加關注業務邏輯;
- 非侵入式,代碼的污染極低;
- 無與倫比的兼容性,與其他優秀的第三方框架無縫整合;
- Spring 框架的源碼是無與倫比的 Java 代碼盛宴;
- 高度的開放性;
- 開源社區十分活躍,文檔齊全,學習成本不高。
SpringMVC
SpringMVC 是 Spring 框架體系中的全功能 MVC 模塊,在前面 Spring 結構圖中可以看到這一關系,其中的 Web MVC 即 SpringMVC。SpringMVC 是基于 Java 語言實現 MVC 設計模式的請求驅動類型的輕量級 Web 框架,目的是將 Web 開發模塊化及代碼簡化。其提供了 DispatcherServlet 前端控制器分派請求,同時提供靈活的配置處理程序映射、視圖解析,并支持文件上傳,目前已經是眾多 MVC 框架中的佼佼者。
下圖為 SpringMVC 框架的工作流程圖及注釋:
SpringMVC 框架的優點如下:
- Spring 和 SpringMVC 無需復雜的操作即可整合,天生契合,靈活度高,非侵入性;
- 配置簡單,學習成本低;
- 設計合理,各模塊分工明確,功能強大;
- 非常容易與第三方視圖技術集成整合;
- 能夠進行 Web 層的單元測試;
- 支持靈活的 URL 到頁面控制器的映射;
- 靈活且強大的數據驗證、格式化和數據綁定機制;
- 開源社區十分活躍,文檔齊全。
MyBatis
MyBatis 的前身是 Apache 社區的一個開源項目 iBatis,于2010年更名為 MyBatis。MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優秀的持久層框架,避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集,使得開發人員更加關注 SQL 本身和業務邏輯,不用再去花費時間關注整個復雜的 JDBC 操作過程。
以下為 MyBatis 的結構圖:
MyBatis 的優點如下:
- 封裝了 JDBC 大部分操作,減少開發人員工作量;
- 相比一些自動化的 ORM 框架,“半自動化”使得開發人員可以自由的編寫 SQL 語句,靈活度更高;
- Java 代碼與 SQL 語句分離,降低維護難度;
- 自動映射結果集,減少重復的編碼工作;
- 開源社區十分活躍,文檔齊全,學習成本不高。
總結
由于篇幅有限,本文只簡單介紹了 SSM 技術棧,后續文章將專注于實戰教程部分。另外,與 SSH 技術棧的比較不在本文的討論范圍內,我認為這種框架之間的對比對于學習者來說也只是看個熱鬧,只有真正的使用過才能懂得其中的區別。同時,我也認為技術之間沒有高低優劣之分,只有適不適合自己,因此就不再花費篇幅去做對比了,有興趣的朋友可以去實際體驗一下再做對比,切不可眼高手低。
我有一個微信公眾號,經常會分享一些Java技術相關的干貨;如果你喜歡我的分享,可以用微信搜索“Java團長”或者“javatuanzhang”關注。
總結
以上是生活随笔為你收集整理的Spring MVC+ Spring + Mybatis “三大框架”介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LintCode 两两交换链表中的节点
- 下一篇: Win10系列:JavaScript页面