跳到主要内容
版本:7.0.3

Spring框架概述

Hunyuan 7b 中英对照 Overview Spring Framework Overview

Spring使得创建Java企业级应用程序变得容易。它提供了在企业环境中使用Java语言所需的一切,同时支持在JVM上使用Groovy和Kotlin作为替代语言,并且可以根据应用程序的需求灵活地创建多种架构。从Spring Framework 6.0开始,Spring要求使用Java 17或更高版本。

Spring支持广泛的应用场景。在大型企业中,应用程序往往存在很长时间,并且必须在JDK和应用服务器上运行,而这些系统的升级周期超出了开发人员的控制范围。还有一些应用程序可能以单个jar文件的形式运行,其中嵌入了服务器,可能是在云环境中。此外,还有一类是独立应用程序(如批处理或集成工作负载),它们不需要服务器。

Spring 是开源的。它拥有一个庞大且活跃的社区,该社区基于各种实际应用场景提供持续的反馈。这帮助 Spring 在很长一段时间内成功发展。

我们所说的“Spring”是什么意思

“Spring”这个词在不同的上下文中有不同的含义。它可以用来指代Spring框架项目本身,也就是这一切的起点。随着时间的推移,其他Spring项目都是在Spring框架的基础上构建起来的。大多数情况下,当人们提到“Spring”时,他们指的是这一系列项目的整体。本参考文档主要关注基础部分:即Spring框架本身。

Spring框架被划分为多个模块。应用程序可以根据需要选择使用哪些模块。其核心是核心容器模块,其中包括一个配置模型和依赖注入机制。除此之外,Spring框架还为不同的应用架构提供了基础支持,包括消息传递、事务处理与数据持久化以及Web开发。它还包含了基于Servlet的Spring MVC Web框架,同时还有与之并行的Spring WebFlux反应式Web框架。

关于模块的说明:Spring Framework的jar文件可以部署到模块路径(Java模块系统)中。为了在支持模块的应用程序中使用,Spring Framework的jar文件包含Automatic-Module-Name manifest条目,这些条目定义了与jar工件名称无关的稳定语言级模块名称(如spring.corespring.context等)。这些jar文件的命名模式使用-而不是.——例如,spring-corespring-context。当然,Spring Framework的jar文件在类路径上也可以正常使用。

Spring 和 Spring 框架的历史

Spring于2003年应运而生,旨在应对早期J2EE规范的复杂性。虽然有些人认为Java EE及其现代继任者Jakarta EE与Spring存在竞争关系,但实际上它们是互补的。Spring编程模型并不完全采用Jakarta EE平台规范;相反,它只是从传统的EE规范体系中精心挑选出部分规范进行集成:

Spring框架还支持依赖注入(JSR 330)和通用注解(JSR 250)规范,应用程序开发人员可以选择使用这些规范,而不是Spring框架提供的特定于Spring的机制。最初,这些规范是基于常见的javax包的。

从Spring Framework 6.0开始,Spring已经升级到了Jakarta EE 9的标准(例如,使用Servlet 5.0+、JPA 3.0+),并且基于jakarta命名空间而非传统的javax包。由于最低支持标准为EE 9,而EE 10也已被支持,因此Spring已经准备好为Jakarta EE API的进一步发展提供开箱即用的支持。Spring Framework 6.0与Tomcat 10.1、Jetty 11等Web服务器完全兼容,同时也与Hibernate ORM 6.1兼容。

随着时间的推移,Java/Jakarta EE在应用程序开发中的作用已经发生了演变。在J2EE和Spring的早期阶段,应用程序是专门为部署到应用服务器上而创建的。如今,在Spring Boot的助力下,应用程序的创建方式更加符合DevOps和云计算的理念,Servlet容器被内嵌其中,且其更改也变得非常简单。从Spring Framework 5开始,WebFlux应用程序甚至不再直接使用Servlet API,而且可以在非Servlet容器的服务器(如Netty)上运行。

Spring持续创新和发展。除了Spring框架之外,还有其他项目,如Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch等。需要记住的是,每个项目都有自己的源代码仓库、问题跟踪系统以及发布节奏。请访问spring.io/projects查看完整的Spring项目列表。

设计哲学

当你学习一个框架时,了解它不仅能做什么,还了解它遵循哪些原则是很重要的。以下是Spring框架的指导原则:

  • 在每个层面都提供选择。Spring允许你尽可能晚地做出设计决策。例如,你可以通过配置来切换持久化提供者,而无需更改代码。对于许多其他基础设施问题和与第三方API的集成也是如此。

  • 适应不同的观点。Spring注重灵活性,并不坚持某种固定的做事方式。它能够支持具有不同需求的应用程序。

  • 保持强大的向后兼容性。Spring的演进过程经过精心管理,以尽量减少版本之间的破坏性变更。Spring支持一系列精心挑选的JDK版本和第三方库,以便于维护依赖Spring的应用程序和库。

  • 关注API设计。Spring团队投入了大量心思和时间来设计直观的API,这些API能够在多个版本和多年时间里保持稳定。

  • 对代码质量设定高标准。Spring框架非常重视有意义、最新且准确的Javadoc文档。它是为数不多能够宣称拥有无循环依赖包结构的干净代码的项目之一。

反馈与贡献

对于如何操作的问题,或诊断/调试问题,我们建议使用 Stack Overflow。点击此处查看在 Stack Overflow 上建议使用的标签列表。如果您比较确定 Spring Framework 存在问题,或者想要提出功能建议,请使用GitHub Issues

如果您有解决方案或建议的修复方法,可以在 Github 上提交一个拉取请求。不过,请记住,对于除最简单的问题之外的所有问题,我们希望您能在问题跟踪器中提交一个工单,因为在那里会进行讨论,并留下可供将来参考的记录。

有关更多详细信息,请参阅CONTRIBUTING中的指南,该指南位于顶级项目页面上。

入门

如果你刚开始接触Spring,可以尝试通过创建一个基于Spring Boot的应用程序来开始使用Spring框架。Spring Boot提供了一种快速(且有些固执己见的方式)来创建可投入生产的基于Spring的应用程序。它基于Spring框架,更倾向于使用约定而非配置,并且旨在让你尽可能快地开始运行。

你可以使用 start.spring.io 生成一个基本项目,或者参考其中的“入门指南”,例如“构建 RESTful Web 服务入门”。这些指南不仅易于理解,而且非常注重实际操作步骤,其中大多数都是基于 Spring Boot 的。它们还涵盖了 Spring 生态系统中其他可能有助于解决特定问题的项目。