Spring Framework

Spring框架Java 平台的一個開源的全棧(full-stack應用程序框架控制反轉容器實現,一般被直接稱為 Spring。該框架的一些核心功能理論上可用於任何 Java 應用,但 Spring 還為基於Java企業版平台構建的 Web 應用提供了大量的拓展支持。Spring 沒有直接實現任何的編程模型,但它已經在 Java 社區中廣為流行,基本上完全代替了企業級JavaBeans(EJB)模型。

Spring Framework
開發者VMware
首次發布2002年10月1日,​22年前​(2002-10-01
當前版本
  • 6.2.0(2024年11月14日;穩定版本)[1]
編輯維基數據鏈接
源代碼庫 編輯維基數據鏈接
編程語言Java
操作系統跨平台
平台JVM
類型Application framework
許可協議Apache License 2.0
網站spring.io/projects/spring-framework 編輯維基數據

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英語Rod Johnson (programmer) 開發,並在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)的支持能力,是一個非常大的進步。

核心功能模塊

  • 強大的、基於 JavaBeans 的、採用控制反轉(Inversion of Control,IoC)原則的 配置管理,使得應用程序的組建更加簡易快捷。
  • 數據庫事務的一般化抽象層,允許聲明式(Declarative)事務管理器,簡化事務的劃分使之與底層無關。
  • 內建的針對 JTA 和單個 JDBC 數據源的一般化策略,使Spring的事務支持不要求 Java EE 環境,這與一般的 JTA 或者 EJB CMT 相反。
  • JDBC 抽象層提供了有針對性的異常等級(不再從 SQL 異常中提取原始代碼),簡化了錯誤處理,大大減少了程序員的編碼量。再次利用 JDBC 時,你無需再寫出另一個'終止'(finally)模塊。並且面向 JDBC 的異常與 Spring 通用數據訪問對象(Data Access Object)異常等級相一致。
  • 以資源容器,DAO 實現和事務策略等形式與 HibernateJDOMyBatisSQL Maps 集成。利用控制反轉機制全面解決了許多典型的 Hibernate 集成問題。所有這些全部遵從 Spring 通用事務處理和通用數據訪問對象異常等級規範。
  • 靈活的基於核心 Spring 功能的 MVC 網頁應用程序框架。開發者通過策略接口將擁有對該框架的高度控制,因而該框架將適應於多種呈現(View)技術,例如 JSPFreeMarkerVelocityThymeleaf 等。值得注意的是,Spring 中間層可以輕易地結合於任何基於 MVC 框架的網頁層,例如 StrutsWebWorkTapestry
  • 提供諸如事務管理等服務的AOP框架。

在設計應用程序 Model 時,MVC模式(例如 Struts)通常難於給出一個簡潔明了的框架結構。Spring 卻具有能夠讓這部分工作變得簡單的能力。程序開發員們可以使用Spring的JDBC抽象層重新設計那些複雜的框架結構。

控制反轉(IOC,Inverse Of Control),即把創建對象的權利交給框架,也就是指將對象的創建、對象的存儲、對象的管理交給了Spring容器。Spring容器是Spring中的一個核心模塊,用於管理對象,底層可以理解為是一個Map集合。

剖面導向程式設計(Aspect-Oriented Programming, AOP) 就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任分開封裝起來,便於減少系統的重複代碼,降低模塊間的耦合度,並有利於未來的可操作性和可維護性。

數據訪問(DAO層支持)

Spring Data實現了對數據訪問接口的統一,支持多種數據庫訪問框架或組件(如:JDBC、HibernateMyBatisiBatis))作為最終數據訪問的實現。

Spring框架為事務管理提供了一致的抽象,具有以下優點:

  • 跨不同事務API(如:Java事務JDBCHibernate和Java Persistence API事務(JPA))的一致編程模型
  • 支持聲明式事務
  • 與諸如JTA之類的複雜事務API相比,用於程序化事務管理的API更簡單
  • 與Spring的數據訪問抽象出色地集成

Spring MVC 實現了基於 MVC 設計方法的實現,結合基於Java註解的配置,允許開發者開發出低代碼侵入的Web應用項目,並簡便地實現大部分Web功能(包括請求參數注入、文件上傳控制等)。

約定大於配置」的快速應用開發

Spring Boot

Spring Boot是基於Spring Framework 4.0衍生的,用於快速搭建獨立的基於生產級別的Spring應用的框架,可以以最小的依賴引入來構建一個Spring應用。並且它還具有以下特點:

  • 擁有嵌入式的Tomcat, Jetty, Undertow或者Reactor Netty(無需部署war文件
  • 儘可能地自動配置(@AutoConfiguration)Spring和第三方庫
  • 提供用於生產的功能,例如指標、運行狀態檢查和外部化配置
  • 無需麻煩而冗餘的XML配置,一切都可以使用Java配置

整合框架

相關鏈接

參考資料

  1. ^ Release v6.2.0. 
  2. ^ Jolt winners 2006. [2017-03-30]. (原始內容存檔於2008-12-29). 
  3. ^ JAX Innovation Award Gewinner 2006. [2017-03-30]. (原始內容存檔於2009-08-17). 
  4. ^ Spring Framework 3.2.5 Released. Official Spring website. 7 Nov 2013 [16 October 2016]. (原始內容存檔於2016-12-03).