概述
1. 我们所说的“Spring”是什么意思
术语 “Spring” 在不同的上下文中意味着不同的事物。它可以用来指代 Spring Framework 项目本身,这是一切开始的地方。随着时间的推移,其他 Spring 项目已经构建在 Spring 框架之上。大多数情况下,当人们说 “Spring”,他们指的是整个项目系列。本参考文档重点介绍 基础:Spring Framework 本身。
Spring Framework 分为多个模块。应用程序可以选择他们需要的模块。 核心是核心容器的模块,包括配置模型和 依赖注入机制。除此之外,Spring 框架还提供了基础 支持不同的应用程序架构,包括消息传递、事务数据和 持久性和 Web 的 Web 共享。它还包括基于 Servlet 的 Spring MVC Web 框架,并且在 parallel,Spring WebFlux 反应式 Web 框架。
关于模块的说明:Spring 的框架 jar 允许部署到 JDK 9 的模块路径 (“拼图”)。为了在支持 Jigsaw 的应用程序中使用,Spring Framework 5 jar 附带了 “Automatic-Module-Name” 清单条目,用于定义稳定的语言级模块名称 (“spring.core”、“spring.context”等)独立于 jar 工件名称(jar 遵循 相同的命名模式,用 “-” 而不是 “.”,例如 “spring-core” 和 “spring-context”)。 当然,Spring 的框架 jar 在 JDK 8 和 9+ 的 Classpath 上都能正常工作。
2. Spring 和 Spring 框架的历史
Spring 于 2003 年问世,作为对早期 J2EE 规范复杂性的回应。 虽然有些人认为 Java EE 和 Spring 是竞争的,但 Spring 实际上是互补的 添加到 Java EE。Spring 编程模型不包含 Java EE 平台规范; 相反,它与 EE 保护伞中精心挑选的单个规范集成:
Spring Framework 还支持依赖注入 (JSR 330) 和通用注释 (JSR 250) 规范,应用程序开发人员 可以选择使用而不是 Spring 框架提供的特定于 Spring 的机制。
从 Spring Framework 5.0 开始,Spring 需要 Java EE 7 级别(例如 Servlet 3.1+、JPA 2.1+) 作为最低要求 - 同时提供与较新 API 的开箱即用集成 在 Java EE 8 级别(例如 Servlet 4.0、JSON Binding API)时遇到。 这使得 Spring 与 Tomcat 8 和 9、WebSphere 9 和 JBoss EAP 7 完全兼容。
随着时间的推移,Java EE 在应用程序开发中的作用发生了变化。在早期 Java EE 和 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、 等等。请务必记住,每个项目都有自己的源代码存储库 Issue Tracker 和 Release Cadence 的 Cadence 进行更新。请参阅 spring.io/projects Spring 项目的完整列表。
3. 设计理念
当您了解框架时,不仅要知道它做什么,还要知道它做什么 它遵循的原则。以下是 Spring 框架的指导原则:
-
在每个级别提供选择。Spring 允许您尽可能晚地推迟设计决策。 例如,您可以通过配置切换持久性提供程序,而无需更改 您的代码。许多其他基础设施问题以及与 第三方 API。
-
容纳不同的观点。Spring 拥抱灵活性,不固执己见 关于应该如何做事。它支持广泛的应用需求 不同的观点。
-
保持强大的向后兼容性。Spring 的演变得到了精心管理 强制在版本之间进行少量的重大更改。Spring 支持精心挑选的范围 JDK 版本和第三方库,以方便维护应用程序和 依赖于 Spring 的库。
-
关心 API 设计。Spring 团队在制作 API 上投入了大量的思考和时间 它们很直观,并且在许多版本和多年中都适用。
-
为代码质量设定高标准。Spring Framework 非常强调 有意义、最新且准确的 Javadoc。这是极少数可以声称的项目之一 干净的代码结构,包之间没有循环依赖关系。
4. 反馈和贡献
对于操作方法问题或诊断或调试问题,我们建议使用 Stack Overflow。单击此处查看可在 Stack Overflow 上使用的建议标签列表。如果你相当确定 Spring Framework 中存在问题或想建议某个功能,请使用 GitHub 问题。
如果您有解决方案或建议的修复方法,可以在 Github 上提交拉取请求。但是,请记住 对于除最琐碎的问题之外的所有问题,我们期望在该问题中提交一个工单 跟踪器,在这里进行讨论并留下记录以供将来参考。
有关更多详细信息,请参阅 CONTRIBUTING、 顶层项目页面。
5. 开始
如果您刚刚开始使用 Spring,则可能需要开始使用 Spring 框架,通过创建基于 Spring Boot 的 应用。Spring Boot 提供了一种快速(且固执己见)的方法来创建一个 生产就绪的基于 Spring 的应用程序。它基于 Spring 框架,偏爱 约定优于配置,旨在让您快速启动并运行 尽可能。
您可以使用 start.spring.io 生成基本项目或遵循 “入门”指南之一,例如开始构建 RESTful Web 服务。 除了更容易消化之外,这些指南还非常注重任务,而且大多数 基于 Spring Boot。它们还涵盖了 Spring 产品组合中的其他项目,这些项目 在解决特定问题时,您可能需要考虑。