对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

Spring Framework 概述

Spring 使创建 Java 企业应用程序变得非常容易。它提供了在企业环境中使用 Java 语言所需的一切,支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以根据应用程序的需求灵活地创建各种架构。从 Spring Framework 6.0 开始,Spring 要求 Java 17+。spring-doc.cadn.net.cn

Spring 支持广泛的应用场景。在大型企业中,应用程序通常会存在很长时间,并且必须在 JDK 和应用服务器上运行,而这些的升级周期是开发者无法控制的。其他应用程序可能以单个 jar 文件的形式运行,其中包含嵌入式服务器,可能在云环境中运行。还有一些可能是不需要服务器的独立应用程序(如批处理或集成工作负载)。spring-doc.cadn.net.cn

Spring 是开源的。它拥有一个庞大且活跃的社区,基于多种多样的实际使用案例提供持续的反馈。这帮助 Spring 在很长一段时间内成功地不断进化。spring-doc.cadn.net.cn

我们所说的“Spring”

“Spring”这个术语在不同的上下文中有着不同的含义。它可以用来指代Spring框架项目本身,这也是它最初开始的地方。随着时间的推移,在Spring框架的基础上又开发出了其他的Spring项目。大多数人说“Spring”时,指的是整个项目家族。本参考文档专注于基础部分:Spring框架本身。spring-doc.cadn.net.cn

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

关于模块的说明:Spring 的框架 jar 文件允许部署到 JDK 9 的模块路径(“Jigsaw”)。在 Jigsaw 支持的应用程序中,Spring Framework 5 的 jar 文件带有 "Automatic-Module-Name" 清单条目,这些条目定义了稳定的语言级模块名称(“spring.core”、“spring.context”等),与 jar 艺术品名称无关(这些 jar 文件遵循相同的命名模式,用 "-" 替代 ".",例如“spring-core”和“spring-context”)。当然,Spring 的框架 jar 文件在 JDK 8 和 9+ 的类路径上仍然可以正常工作。spring-doc.cadn.net.cn

Spring 与 Spring 框架的历史

Spring 于 2003 年诞生,作为对早期 J2EE 规范复杂性的回应。 虽然有些人认为 Java EE 及其现代继任者 Jakarta EE 与 Spring 相竞争,但实际上它们是互补的。Spring 编程模型并不采用 Jakarta EE 平台规范;相反,它与传统 EE 范围中精心选择的单个规范集成:spring-doc.cadn.net.cn

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

从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和Undertow 2.3作为Web服务器完全兼容,也与Hibernate ORM 6.1兼容。spring-doc.cadn.net.cn

随着时间的推移,Java/Jakarta EE在应用程序开发中的角色已经发生了变化。在J2EE和Spring的早期,应用程序是为部署到应用服务器而创建的。如今,在Spring Boot的帮助下,应用程序以DevOps和云友好的方式创建,带有嵌入式的Servlet容器,更改起来非常简单。从Spring Framework 5开始,WebFlux应用程序甚至不再直接使用Servlet API,可以在非Servlet容器的服务器(如Netty)上运行。spring-doc.cadn.net.cn

Spring 持续创新和演进。除了 Spring 框架之外,还有其他项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。要记住,每个项目都有自己的源代码仓库、问题跟踪器和发布周期。请访问 spring.io/projects 查看 Spring 项目的完整列表。spring-doc.cadn.net.cn

设计哲学

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

  • 在每一层都提供选择。Spring 允许你尽可能推迟设计决策。 例如,你可以通过配置切换持久化提供商而无需更改你的代码。对于许多其他基础设施问题和与第三方 API 的集成也是如此。spring-doc.cadn.net.cn

  • 容纳多元视角。Spring 重视灵活性,并不强加特定的做事方式。它通过不同的视角支持广泛的应用需求。spring-doc.cadn.net.cn

  • 保持强大的向后兼容性。Spring 的演进得到了仔细的管理,以在版本之间尽量减少破坏性更改。Spring 支持经过精心选择的 JDK 版本和第三方库,以方便依赖 Spring 的应用程序和库的维护。spring-doc.cadn.net.cn

  • 关注API设计。Spring团队投入了大量的思考和时间,以创建直观且在多个版本和多年间依然适用的API。spring-doc.cadn.net.cn

  • 设定代码质量的高标准。Spring框架非常重视有意义、及时且准确的javadoc。它是为数不多的可以声称具有清晰代码结构且包之间没有循环依赖的项目之一。spring-doc.cadn.net.cn

反馈与贡献

对于如何提问或诊断和调试问题,我们建议使用 Stack Overflow。点击 这里 查看在 Stack Overflow 上建议使用的标签列表。如果您确定 Spring 框架中存在一个问题或想要提出一个功能建议,请使用 GitHub Issuesspring-doc.cadn.net.cn

如果您有想法或建议的解决方案,可以在 Github 上提交一个拉取请求。但是,请记住, 对于除最微小的问题之外的所有问题,我们期望在问题跟踪器中提交一个工单, 在其中进行讨论并为将来的参考留下记录。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 贡献指南 中的说明,以及顶级项目页面。spring-doc.cadn.net.cn

入门指南

如果您刚开始使用Spring,您可能希望从创建一个基于Spring Boot的应用程序开始。Spring Boot提供了一种快速(且具有倾向性)的方式来创建一个可投入生产的基于Spring的应用程序。它基于Spring框架,强调约定优于配置,并旨在让您尽快开始运行。spring-doc.cadn.net.cn

您可以使用 start.spring.io 生成一个基本项目,或按照以下其中一个 “入门”指南,例如 开始构建一个 RESTful 网络服务。 这些指南不仅更易于理解,而且非常注重任务,其中大多数都基于 Spring Boot。它们还涵盖了 Spring 产品组合中的其他项目, 您在解决特定问题时可能需要考虑这些项目。spring-doc.cadn.net.cn