Spring Framework

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
Spring Framework
開發者Pivotal
首次發布2002年10月1日,​21年前​(2002-10-01
目前版本
  • 6.1.4 (2024年2月15日;穩定版本)[1]
編輯維基數據鏈結
原始碼庫 編輯維基數據鏈結
程式語言Java
作業系統跨平台
平台JVM
類型Application framework
許可協定Apache License 2.0
網站spring.io/projects/spring-framework 編輯維基數據

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

Spring框架以 Apache License 2.0 開源許可協定的形式發布,該框架最初由 Rod Johnson 以及 Juergen Hoeller 等人開發。

版本歷史

第一版由 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的資料訪問抽象出色地整合

模型-視圖-控制器(MVC)

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. ^ 1.0 1.1 Release v6.1.4. 
  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).