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).