Spring 框架概述
版本 5.3.23
Spring 使创建 Java 企业应用程序变得容易。它提供您所需的一切 需要在企业环境中拥抱Java语言,并支持Groovy。 和 Kotlin 作为 JVM 上的替代语言,并且可以灵活地创建许多 各种体系结构,具体取决于应用程序的需求。从 Spring Framework 5.1 开始, Spring 需要 JDK 8+(Java SE 8+),并为 JDK 11 LTS 提供开箱即用的支持。 Java SE 8 update 60 建议作为 Java 8 的最低补丁版本,但它是 通常建议使用最新的修补程序版本。
Spring 支持广泛的应用场景。在大型企业中,应用程序 经常存在很长时间,并且必须在其升级的JDK和应用程序服务器上运行 周期超出了开发人员的控制范围。其他人可能作为嵌入服务器的单个jar运行, 可能在云环境中。还有一些可能是独立的应用程序(例如批处理 或不需要服务器的集成工作负载。
春天是开源的。它有一个庞大而活跃的社区,提供持续的反馈 基于各种实际用例。这帮助Spring成功 经过很长时间的发展。
1. 我们所说的“Spring”是什么意思
“春天”一词在不同的语境中意味着不同的东西。它可以用来指代 Spring 框架项目本身,这是一切开始的地方。随着时间的流逝,其他春天 项目建立在 Spring 框架之上。大多数情况下,当人们说 “春天”,它们是指整个项目家族。本参考文档重点介绍 基础:Spring 框架本身。
Spring 框架分为多个模块。应用程序可以选择所需的模块。 核心是核心容器的模块,包括配置模型和 依赖注入机制。除此之外,Spring 框架提供了基础 支持不同的应用程序架构,包括消息传递、事务数据和 持久性和网络。它还包括基于 Servlet 的 Spring MVC Web 框架,并且 同时,Spring WebFlux 响应式 Web 框架。
关于模块的说明:Spring 的框架 jar 允许部署到 JDK 9 的模块路径 (“拼图”)。为了在支持拼图的应用程序中使用,Spring Framework 5 jar 附带 定义稳定语言级模块名称的“自动模块名称”清单条目 (“spring.core”、“spring.context”等)独立于 jar 工件名称(jar 遵循 相同的命名模式是“-”而不是“.”,例如“spring-core”和“spring-context”)。 当然,Spring 的框架 jar 在 JDK 8 和 9+ 的类路径上都能正常工作。
2. Spring的历史和Spring的框架
Spring 诞生于 2003 年,是对早期J2EE规范复杂性的回应。 虽然有些人认为Java EE和Spring是竞争,但Spring实际上是互补的。 到 Java EE。Spring 编程模型不包含 Java EE 平台规范; 相反,它集成了从EE伞中精心挑选的单个规格:
- Servlet API (JSR 340)
- WebSocket API (JSR 356))
- 并发实用程序 (JSR 236))
- JSON Binding API (JSR 367)
- Bean 验证 (JSR 303))
- JPA (JSR 338))
- JMS (JSR 914)
- 以及用于事务协调的 JTA/JCA 设置(如有必要)。
Spring 框架还支持依赖注入 (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 Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch, 等等。重要的是要记住,每个项目都有自己的源代码存储库, 问题跟踪器和发布节奏。请参阅spring.io/projects 春季项目的完整列表。
3. 设计理念
当你了解一个框架时,重要的是不仅要知道它做了什么,还要知道它做了什么。 它遵循的原则。以下是 Spring 框架的指导原则:
- 提供各个级别的选择。Spring 允许您尽可能晚地推迟设计决策。 例如,您可以通过配置切换持久性提供程序,而无需更改 您的代码。许多其他基础设施问题和与 第三方 API。
- 适应不同的观点。弹簧拥抱灵活性,不固执己见 关于应该如何做事。它支持广泛的应用需求 不同的观点。
- 保持强大的向后兼容性。春天的演变得到了精心的管理 强制在版本之间进行一些重大更改。弹簧支持精心挑选的范围 JDK 版本和第三方库,以方便应用程序的维护 依赖于 Spring 的库。
- 关心 API 设计。Spring 团队投入了大量的思想和时间来制作 API 直观且经得起许多版本和多年的考验。
- 为代码质量设定高标准。Spring 框架非常重视 有意义、最新且准确的 javadoc。这是极少数可以声称的项目之一 干净的代码结构,包之间没有循环依赖关系。
4. 反馈和贡献
对于操作方法问题或诊断或调试问题,我们建议使用堆栈溢出。单击此处获取在堆栈溢出上使用的建议标签列表。如果你相当确定 Spring 框架中有问题或想建议一个功能,请使用 GitHub 问题。
如果您有解决方案或建议的修复,可以在Github 上提交拉取请求。但是,请记住 对于除了最微不足道的问题之外的所有问题,我们希望在问题中提交一张票证 跟踪器,在这里进行讨论并留下记录以供将来参考。
5. 入门
如果你刚刚开始使用 Spring,你可能想开始使用 Spring。 通过创建基于Spring 引导的框架 应用。Spring Boot 提供了一种快速(且固执己见)的方式来创建一个 生产就绪的基于 Spring 的应用程序。它基于Spring框架,青睐 约定重于配置,旨在让您快速启动和运行 尽可能。
您可以使用start.spring.io生成基本项目或关注 “入门”指南之一,如构建 RESTful Web 服务的入门。 除了更容易消化之外,这些指南非常注重任务,其中大多数 基于Spring Boot。它们还涵盖了Spring投资组合中的其他项目 在解决特定问题时,您可能需要考虑。