Spring 框架是 Java 平臺的一個開源的全棧（fullstack）應用程式框架和控制反轉容器實現，一般被直接稱為 Spring。該框架的一些核心功能理論上可用於任何 Java 應用，但 Spring 還為基於 Java 企業版平臺構建的 Web 應用提供了大量的拓展支援。Spring 沒有直接實現任何的程式設計模型，但它已經在 Java 社群中廣為流行，基本上完全代替了企業級 JavaBeans（EJB）模型。 Spring 框架以 Apache License 20 開源許可協議的形式釋出，該框架最初由 Rod Johnson 以及 Juergen Hoeller 等人開發。 版本歷史 版本 日期 描述 09 2003 10 March 24 2004 第一個產品發布 20 2006 30 2009 40 2013 50 2017 60 2022 年 11 月 22 61 2023 年 11 月 16 62 預計發行 2024 年 12 月 第一版由 開發，並在 2002 年 10 月釋出在 Expert OneonOne J2EE Design and Development 一書中。2003 年 6 月，Spring Framework 第一次釋出在 Apache 20 許可證下。2004 年 3 月，釋出了里程碑的版本 10，2004 年 9 月以及 2005 年 3 月，又釋出了新的里程碑版本。2006 年，Spring Framework 獲得了 Jolt 生產力獎 和 JAX 創新獎。 2006 年 10 月釋出 Spring 20，2007 年 11 月 Spring 25，2009 年 12 月 Spring 30，2011 年 Spring 31，2013 年 11 月 Spring 325，2013 年 12 月釋出了 40 版本。值得注意的是，Spring 40 版本中增加了對 Java SE 8 Groovy 2 Java EE 7 的一些方面以及 WebSocket 的支援。 2017 年 9 月 Spring Framework 正式釋出了 50 版本，此版本引入了 Spring WebFlux，一個高效能、響應式、非同步的 Web 框架。Spring 50 重點加強了對函數語言程式設計、響應式程式設計（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 實現和事務策略等形式與 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 集合。 zhhans 面向切面程式設計；zhhant 剖面導向程式設計；zhtw 特性導向程式設計； zhhans 面向切面程式設計；zhhant 剖面導向程式設計；zhtw 特性導向程式設計；（AspectOriented Programming AOP） 就是將那些與業務無關，卻為業務模組所共同呼叫的邏輯或責任分開封裝起來，便於減少系統的重複程式碼，降低模組間的耦合度，並有利於未來的可操作性和可維護性。 資料訪問（DAO 層支援） Spring Data 實現了對資料訪問介面的統一，支援多種資料庫訪問框架或元件（如：JDBC、Hibernate、MyBatis（iBatis））作為最終資料訪問的實現。 事務管理 Spring 框架為事務管理提供了一致的抽象，具有以下優點： 跨不同事務 API（如：Java 事務、JDBC、Hibernate 和 Java Persistence API 事務（JPA））的一致程式設計模型 支援宣告式事務 與諸如 JTA 之類的複雜事務 API 相比，用於程式化事務管理的 API 更簡單 與 Spring 的資料訪問抽象出色地整合 模型 檢視 控制器（MVC） Spring MVC 實現了基於 MVC 設計方法的實現，結合基於 Java 註解的配置，允許開發者開發出低程式碼侵入的 Web 應用專案，並簡便地實現大部分 Web 功能（包括請求引數注入、檔案上傳控制等）。 遠端訪問 約定大於配置 的快速應用開發 Spring Boot Spring Boot 是基於 Spring Framework 40 衍生的，用於快速搭建獨立的基於生產級別的 Spring 應用的框架，可以以最小的依賴引入來構建一個 Spring 應用。並且它還具有以下特點： 擁有嵌入式的 Tomcat Jetty Undertow 或者 Reactor Netty（無需部署 war 檔案） 儘可能地自動配置（AutoConfiguration）Spring 和第三方庫 提供用於生產的功能，例如指標、執行狀態檢查和外部化配置 無需麻煩而冗餘的 XML 配置，一切都可以使用 Java 配置 批處理 整合框架 相關連結 Spring Framework Spring Framework API（Javadoc） httpwwwspringframeworkorgdtdspringbeansdtd httpwwwspringframeworkorgdocsreferencespringbeansdtdhtml as HTML Spring Framework NET 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 20042005 SpringHub Domain Specific Modeling DSM in IoC frameworks 參考資料 分類：Java 企業平臺 Category 面向切面的程式設計 Category 軟體框架