Spring框架是 Java 平台的一個開源的全棧(full-stack)應用程式框架和控制反轉容器實現,一般被直接稱為 Spring。該框架的一些核心功能理論上可用於任何 Java 應用,但 Spring 還為基於Java企業版平台構建的 Web 應用提供了大量的擴充支援。Spring 沒有直接實現任何的編程模型,但它已經在 Java 社群中廣為流行,基本上完全代替了企業級JavaBeans(EJB)模型。
此條目可參照英語維基百科相應條目來擴充。 (2019年6月18日) |
Spring框架以 Apache License 2.0 開源許可協定的形式發佈,該框架最初由 Rod Johnson 以及 Juergen Hoeller 等人開發。
版本歷史
版本 | 日期 | 描述 |
---|---|---|
0.9 | 2003 | |
1.0 | March 24, 2004 | 第一個產品發佈 |
2.0 | 2006 | |
3.0 | 2009 | |
4.0 | 2013 | |
5.0 | 2017 | |
6.0 | 2022年11月22 | |
6.1 | 2023年11月16 | |
6.2 | 預計發行 2024年12月 |
第一版由 Rod Johnson 開發,並在2002年10月發佈在 Expert One-on-One J2EE Design and Development 一書中。2003年6月,Spring Framework 第一次發佈在 Apache 2.0 許可證下。2004年3月,發佈了里程碑的版本1.0,2004年9月以及2005年3月,又發佈了新的里程碑版本。2006年,Spring Framework 獲得了 Jolt 生產力獎 和 JAX 創新獎。[2][3]
2006年10月發佈Spring 2.0,2007年11月 Spring 2.5,2009年12月 Spring 3.0,2011年 Spring 3.1,2013年11月 Spring 3.2.5,2013年12月發佈了4.0版本。[4]值得注意的是,Spring 4.0 版本中增加了對 Java SE 8, Groovy 2, Java EE 7 的一些方面以及 WebSocket 的支援。
2017年9月 Spring Framework 正式發佈了 5.0 版本,此版本引入了 Spring WebFlux,一個高效能、響應式、非同步的 Web 框架。Spring 5.0 重點加強了對函數式程式設計、響應式程式設計(reactive programming)的支援能力,是一個非常大的進步。
核心功能模組
- 一個可用於 Java EE 等執行環境的核心 Bean工廠。
- 資料庫事務的一般化抽象層,允許聲明式(Declarative)事務管理器,簡化事務的劃分使之與底層無關。
- JDBC 抽象層提供了有針對性的異常等級(不再從 SQL 異常中提取原始代碼),簡化了錯誤處理,大大減少了程式設計師的編碼量。再次利用 JDBC 時,你無需再寫出另一個'終止'(finally)模組。並且面向 JDBC 的異常與 Spring 通用數據訪問對象(Data Access Object)異常等級相一致。
- 以資源容器,DAO 實現和事務策略等形式與 Hibernate,JDO 和 MyBatis 、SQL Maps 整合。利用控制反轉機制全面解決了許多典型的 Hibernate 整合問題。所有這些全部遵從 Spring 通用事務處理和通用數據訪問對象異常等級規範。
- 靈活的基於核心 Spring 功能的 MVC 網頁應用程式框架。開發者通過策略介面將擁有對該框架的高度控制,因而該框架將適應於多種呈現(View)技術,例如 JSP、FreeMarker、Velocity、Thymeleaf 等。值得注意的是,Spring 中間層可以輕易地結合於任何基於 MVC 框架的網頁層,例如 Struts、WebWork 或 Tapestry。
- 提供諸如事務管理等服務的AOP框架。
在設計應用程式 Model 時,MVC模式(例如 Struts)通常難於給出一個簡潔明了的框架結構。Spring 卻具有能夠讓這部分工作變得簡單的能力。程式開發員們可以使用Spring的JDBC抽象層重新設計那些複雜的框架結構。
控制反轉(IOC,Inverse Of Control),即把建立對象的權利交給框架,也就是指將對象的建立、對象的儲存、對象的管理交給了Spring容器。Spring容器是Spring中的一個核心模組,用於管理對象,底層可以理解為是一個Map集合。
剖面導向程式設計(Aspect-Oriented Programming, AOP) 就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任分開封裝起來,便於減少系統的重複代碼,降低模組間的耦合度,並有利於未來的可操作性和可維護性。
Spring Data實現了對數據訪問介面的統一,支援多種資料庫訪問框架或組件(如:JDBC、Hibernate、MyBatis(iBatis))作為最終數據訪問的實現。
Spring框架為事務管理提供了一致的抽象,具有以下優點:
Spring MVC 實現了基於 MVC 設計方法的實現,結合基於Java註解的組態,允許開發者開發出低代碼侵入的Web應用專案,並簡便地實現大部分Web功能(包括請求參數注入、檔案上載控制等)。
Spring Boot是基於Spring Framework 4.0衍生的,用於快速搭建獨立的基於生產級別的Spring應用的框架,可以以最小的依賴引入來構建一個Spring應用。並且它還具有以下特點:
- 擁有嵌入式的Tomcat, Jetty, Undertow或者Reactor Netty(無需部署war檔案)
- 儘可能地自動組態(@AutoConfiguration)Spring和第三方庫
- 提供用於生產的功能,例如指標、執行狀態檢查和外部化組態
- 無需麻煩而冗餘的XML組態,一切都可以使用Java組態
相關連結
- Spring Framework MVC Tutorial(頁面存檔備份,存於互聯網檔案館)
- Simple Spring Demo(頁面存檔備份,存於互聯網檔案館)
- Introduction to the Spring Framework by Rod Johnson(頁面存檔備份,存於互聯網檔案館)
- The Spring Reference Documentation(頁面存檔備份,存於互聯網檔案館)(PDF,1329 kb)- Rod Johnson et al. (2004-2005)
參考資料
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.