Spring Framework Overview
Spring 使得创建 Java 企业应用程序变得容易。它提供了您在企业环境中使用 Java 语言所需的一切,包括对 Groovy 和 Kotlin 作为 JVM 上备用语言的支持,以及根据应用程序的需要创建多种架构的灵活性。从 Spring Framework 6.0 开始,Spring 需要 Java 17 及更高版本。 Spring 支持广泛的应用程序场景。在大型企业中,应用程序往往存在很长时间,并且必须在 JDK 和应用程序服务器上运行,而它们的升级周期超出了开发者的控制范围。其他应用程序可能作为带有嵌入服务器的单个 jar 文件运行,可能在云环境中运行。还有一些可能是独立应用程序(如批处理或集成工作负载),不需要服务器。 Spring 是一个开源项目。它拥有一个庞大而活跃的社区,可以根据多种实际用例提供持续的反馈。这一功能帮助 Spring 在很长的时间里成功地不断发展。
What We Mean by "Spring"
在不同的上下文中,“Spring” 一词含义不同。它可以用来指代 Spring Framework 项目本身,它就是从那里开始的。随着时间的推移,其他 Spring 项目已构建在 Spring Framework 之上。在大多数情况下,当人们说“Spring”时,他们指的是整个项目系列。此参考文档重点介绍了基础:Spring Framework 本身。
Spring Framework 分为多个模块。应用程序可以选择所需的模块。核心是核心容器的模块,包括配置模型和依赖关系注入机制。除此之外,Spring Framework 为不同的应用程序架构提供基础支持,包括消息传递、事务数据和持久性,以及 Web。它还包括基于 Servlet 的 Spring MVC Web 框架,以及并行的 Spring WebFlux 响应式 Web 框架。
有关模块的说明:Spring 的框架 jar 允许部署到 JDK 9 的模块路径(“Jigsaw”)。为了在启用 Jigsaw 的应用程序中使用,Spring Framework 5 jar 附带“Automatic-Module-Name”清单项,这些项定义与 jar 工件名称无关(jar 遵循相同的命名模式,用 “-” 替换 “.”,例如 “spring-core” 和 “spring-context”)的稳定的语言级模块名称(“spring.core”、“spring.context” 等)。当然,Spring 的框架 jar 在 JDK 8 和 9+ 的类路径上也能正常工作。
History of Spring and the Spring Framework
Spring 诞生于 2003 年,是对早期 J2EE 规范的复杂性的回应。虽然有人认为 Java EE 及其现代继任者 Jakarta EE 与 Spring 相竞争,但事实上它们是互补的。Spring 编程模型并未采用 Jakarta EE 平台规范;相反,它与从传统的 EE 框架中精心挑选的各个规范相集成:
Spring Framework 还支持依赖项注入 (JSR 330) 和通用注释 (JSR 250) 规范,应用程序开发者可以选择使用它们,而不是 Spring Framework 提供的特定于 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 和 Undertow 2.3 完全兼容,用作 Web 服务器,还与 Hibernate ORM 6.1 兼容。
随着时间的推移,Java/Jakarta EE 在应用程序开发中的角色发生了演变。在 J2EE 和 Spring 早期,应用程序都是为了部署到应用程序服务器而创建的。如今,在 Spring Boot 的帮助下,可以在 devops 和云友好的方式中创建应用程序,其中 Servlet 容器已嵌入并且易于更改。在 Spring Framework 5 中,WebFlux 应用程序甚至不再直接使用 Servlet API,并且可以在不是 Servlet 容器的服务器(例如 Netty)上运行。
Spring 不断创新和发展。除了 Spring Framework 以外,还有其他的项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。请记住,每个项目都有自己的源代码存储库、问题追踪器和发布节奏。请参见 spring.io/projects 了解 Spring 项目的完整列表。
Design Philosophy
当您了解框架时,了解它不仅可以做什么,而且遵循什么原则非常重要。以下是 Spring Framework 的指导原则:
-
在各个层面提供选择。Spring 让你尽可能推迟设计决策。例如,你可以在不更改代码的情况下通过配置切换持久性提供者。对于许多其他基础架构问题和对第三方 API 的集成,同样如此。
-
适应不同的观点。Spring 采用灵活性,不主张如何做事。它支持具有不同观点的广泛应用需求。
-
保持强大的向后兼容性。Spring 的演化经过精心管理,以减少版本之间的重大更改。Spring 支持精心选择的一系列 JDK 版本和第三方库,以方便维护依赖于 Spring 的应用程序和库。
-
重视 API 设计。Spring 团队投入大量心血和时间,以制定直观且跨越多个版本和多年的 API。
-
设定代码质量的高标准。Spring Framework 非常重视有意义、最新且准确的 javadoc。它是少数几个声称干净的代码结构且包之间没有循环依赖的项目之一。
Feedback and Contributions
对于操作方法问题或诊断或调试问题,我们建议您使用 Stack Overflow。单击此处 here,获取要在 Stack Overflow 上使用的建议标签列表。如果您相当确定 Spring Framework 中有个问题或者想要建议个功能,请使用 GitHub Issues。
如果您心中有了解决方案或建议的修复,您可以在 Github 上提交一个请求请求。但是,请记住对于除最简单的之外的所有问题,我们期望在问题追踪器中填写一张工单,问题追踪器是讨论问题和将记录保留给未来参考的地方。
有关更多详情,请参见 CONTRIBUTING 的指南,这是顶级项目页面。
Getting Started
如果您刚刚开始使用 Spring,您可能想要使用 Spring Boot-basedapplication 创建一个 Spring Framework。Spring Boot 提供了一种快速(且固执己见)的方式来创建一个基于 Spring 的生产就绪应用。它基于 Spring Framework,优选惯例高于配置,旨在尽快让您开始运行。
您可以使用 start.spring.io 生成一个基本的项目,或者按照其中一个 "入门" 指南,例如 RESTful Web 服务入门指南。这些指南不仅容易消化,而且非常注重任务,并且大多数都基于 Spring Boot。它们还涵盖 Spring 产品组合中的其他项目,当您解决特定问题时,您可能需要考虑这些项目。