共计 3031 个字符,预计需要花费 8 分钟才能阅读完成。
本篇主要說明為什麼要使用框架,以及目前市場上常見的開發架構,順便紀錄當時學習開發 Java 開發 API 遇到的各種困惑,希望藉由此篇文章弄懂概念,若有不對的地方還請留言賜教。
市面上常見的 Java 框架很多,諸如目前最火熱的 Spring Cloud 或 Spring boot,又或者是傳統常見的 SSH 或者 SSM,這些東西到底是什麼?下述讓我們來逐一說明吧!
對於框架的比較可以先參考 Java Web 層框架比較—— JSF、Spring MVC、Stripes、Struts 2、Tapestry 和 Wicket 不過這篇文章距今也有段時間,目前 Java 世界中還是以 Spring 作為領頭羊,後續也將以 Spring boot 進行開發,不過還是先讓我們理解一切整個發展的歷史和架構囉!
三層結構
傳統 Java Web 應用程序是採用 JSP+Servlet+Javabean 來實現的,這種模式實現了最基本的 MVC 分層,使的程序結構分為幾層,有負責前臺展示的 JSP、負責流程邏輯控制的 Servlet 以及負責數據封裝的 Javabean。但是這種結構仍然存在問題:如 JSP 頁面中需要使用符號嵌入很多的 Java 代碼,造成頁面結構混亂,Servlet 和 Javabean 負責了大量的跳轉和運算工作,耦合緊密,程序複用度低等等。因此才會發展出下列的結構:
SSH (Struts + Spring + Hibernate)
Struts(表示層)+ Spring(業務層)+ Hibernate(持久層)
SSM (Spring MVC + Spring + Mybatis)
Spring MVC(表示層)+ Spring(業務層)+ Mybatis(持久層)
Spring MVC:屬於 SpringFrameWork 的後續產品,分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行開發。
Spring:是一個輕量級的 Java 開發框架,它是為了解決企業應用開發的複雜性而創建的。Spring 的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何 Java 應用都可以從 Spring 中受益。簡單來說,Spring 是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。
MyBatis:是一個基於 Java 的持久層框架。MyBatis 提供的持久層框架包括 SQL Maps 和 Data Access Objects(DAO)它消除了幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML 或註解用於配置和原始映射,將接口和 Java 映射成數據庫中的記錄。
框架比較
Spring MVC VS Struts2
Hibernate VS MyBatis
Mybatis 優勢
MyBatis 可以進行更為細緻的 SQL 優化,可以減少查詢欄位。
MyBatis 容易掌握,而 Hibernate 門檻較高。
Hibernate 優勢
Hibernate 的 DAO 層開發比 MyBatis 簡單,Mybatis 需要維護 SQL 和結果映射。
Hibernate 對對象的維護和緩存要比 MyBatis 好,對增刪改查的對象的維護要方便。
Hibernate 資料庫移植性很好,MyBatis 的資料庫移植性不好,不同的資料庫需要寫不同 SQL。
Hibernate 有更好的二級緩存機制,可以使用第三方緩存。MyBatis 本身提供的緩存機制不佳。
結語
在理解完所謂的 SSH 或者 SSM 三層結構後,相信我們已經具備基本程式開發的概念,接下來要介紹的就是近些年來在 Java 開發界最值得關注的框架 Spring boot,可說是集合各種框架於一身的集大成者,底層的 ORM 框架或者是 IoC 框架及 MVC 概念,全部藉由一個框架搞定全部事情,自動化配置節省配置 XML 的時間。
Spring Boot
前面我們提到三層結構,其中每一層都有其負責作用的框架,往往我們在配置環境的時候,必須針對不同業務層使用不同框架必須做配置,配置往往就需要花上許多時間,其中還不乏解決套件彼此的相依性和衝突,因此 Spring Framework 誕生了,為解決應用程式開發的複雜度,Spring 團隊整合了上述所說的資料處理層套件到表現層套件,只需要透過簡單的 Spring boot starter 就能輕鬆 build 起一個應用,不再需要配置 Tomcat 或者是其他相關的 webserver 服務,此外採用自動配置的方式,完全可以拋棄傳統 XML 配置,讓程式開發人員能更專注的開發需求功能而減少配置所帶來的時間成本。
- 創建可以獨立運行的 Spring 應用。
- 直接嵌入 Tomcat 或 Jetty 服務器,不需要部署 WAR 文件。
- 提供推薦的基礎 POM 文件來簡化 ApacheMaven 配置。
- 儘可能的根據項目依賴來自動配置 Spring 框架。
- 提供可以直接在生產環境中使用的功能,如性能指標、應用資訊和應用健康檢查。
- 沒有代碼生成,也沒有 XML 配置文件