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

Quick Facts 開發者, 首次發佈 ...
Spring Framework
開發者VMware
首次發佈2002年10月1日,​22年前​(2002-10-01
目前版本
  • 6.1.4(2024年2月15日;穩定版本)[1]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言Java
作業系統跨平台
平台JVM
類型Application framework
許可協定Apache License 2.0
網站spring.io/projects/spring-framework 編輯維基數據
Close

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

版本歷史

More information 版本, 日期 ...
版本 日期 描述
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月
Close

第一版由 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)原則的 組態管理,使得應用程式的組建更加簡易快捷。
  • 一個可用於 Java EE 等執行環境的核心 Bean工廠
  • 資料庫事務的一般化抽象層,允許聲明式(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組態

批次處理

整合框架

相關連結

參考資料

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.