Spring框架

Spring框架

此条目介绍的是Spring Framework。关于Spring Boot,请见“Spring Boot”。

此条目可参照英语维基百科相应条目来扩充。 (2019年6月18日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。

Spring Framework开发者VMware首次发布2002年10月1日,​22年前​(2002-10-01)当前版本6.2.9(2025年7月17日;稳定版本)[1]

源代码库github.com/spring-projects/spring-framework

编程语言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 等人开发。

版本历史[编辑]

版本

日期

描述

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)原则的 配置管理,使得应用程序的组建更加简易快捷。

一个可用于 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集合。

面向切面程序设计[编辑]

面向切面程序设计(Aspect-Oriented 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 4.0派生的,用于快速搭建独立的基于生产级别的Spring应用的框架,可以以最小的依赖引入来构建一个Spring应用。并且它还具有以下特点:

拥有嵌入式的Tomcat, Jetty, Undertow或者Reactor Netty(无需部署war文件)

尽可能地自动配置(@AutoConfiguration)Spring和第三方库

提供用于生产的功能,例如指标、运行状态检查和外部化配置

无需麻烦而冗余的XML配置,一切都可以使用Java配置

批处理[编辑]

集成框架[编辑]

相关链接[编辑]

维基教科书中的相关电子教程::en:Spring framework

Spring Framework(页面存档备份,存于互联网档案馆)

Spring Framework API(页面存档备份,存于互联网档案馆)(Javadoc)

http://www.springframework.org/dtd/spring-beans.dtd(页面存档备份,存于互联网档案馆)

http://www.springframework.org/docs/reference/springbeansdtd.html(页面存档备份,存于互联网档案馆) (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. (2004-2005)

SpringHub (页面存档备份,存于互联网档案馆)

Domain Specific Modeling (DSM) in IoC frameworks(页面存档备份,存于互联网档案馆)

参考资料[编辑]

^ "Release v6.2.9 · spring-projects/spring-framework"; 检索日期: 2025年8月12日; 作者姓名字符串: spring-projects; 作品或名称使用语言: 英语.

^ Jolt winners 2006. [2017-03-30]. (原始内容存档于2008-12-29).

^ JAX Innovation Award Gewinner 2006. [2017-03-30]. (原始内容存档于2009-08-17).

^ Spring Framework 3.2.5 Released. Official Spring website. 7 Nov 2013 [16 October 2016]. (原始内容存档于2016-12-03).

查论编JavaJava平台

Java

Java版本历史

Java 5.0

JVM

Java字节码

Java ME

Java SE

Java EE

Java Card

Android SDK

Oracle技术

JDK

OpenJDK

Java虚拟机

JavaFX

maxine(英语:Maxine Virtual Machine)

squawk(英语:Squawk virtual machine)

平台技术

Java集合框架

Servlets

JSP

MIDlet(英语:MIDlet)

Java平台模块系统

web start jnlp(英语:Java Web Start)

applet

主要的第三方技术

Eclipse

Spring

Spring Boot

GNU Classpath

Hibernate

IcedTea(英语:IcedTea)

Jazelle(英语:Jazelle)

Struts

TopLink

WildFly

blackdown(英语:Blackdown Java)

harmony

历史

Java版本历史

JCP

Sun微系统

自由的Java实现

主要JVM语言(英语:List of JVM languages)

BeanShell(英语:BeanShell)

Clojure

Groovy

Oxygene(英语:Oxygene (programming language))

JRuby

Jython

Kotlin

Processing

Rhino

Scala

Tcl/Java(英语:Tcl/Java)

会议(英语:Professional conference)

JavaOne

Devoxx(英语:Devoxx)

规范控制数据库:各地

德国

相关数据

邛海:四川第二大淡水湖的魅力
365bet手机投注

邛海:四川第二大淡水湖的魅力

⌛ 07-03 👁️ 6901
携带多少冰毒判死刑
beat365登录平台

携带多少冰毒判死刑

⌛ 07-06 👁️ 1484
如何设置电脑自动获取IP地址
beat365登录平台

如何设置电脑自动获取IP地址

⌛ 08-18 👁️ 6677
支付宝心愿储蓄怎么解冻 资金解冻方法
beat365登录平台

支付宝心愿储蓄怎么解冻 资金解冻方法

⌛ 08-01 👁️ 4439
文本文字(字数,字符数,字节数)统计在线计算器
365bet手机投注

文本文字(字数,字符数,字节数)统计在线计算器

⌛ 08-02 👁️ 9293