Spring 框架概述
Spring 使创建 Java 企业应用程序变得容易。它为您提供了一切 需要在企业环境中采用 Java 语言,并支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以灵活地创建许多 各种架构,具体取决于应用程序的需求。从 Spring Framework 6.0 开始, Spring 需要 Java 17+。
Spring 支持广泛的应用场景。在大型企业中,应用程序 通常存在很长时间,必须在升级的 JDK 和应用程序服务器上运行 周期超出了开发人员的控制范围。其他的可以作为嵌入服务器的单个 jar 运行, 可能在云环境中。其他应用程序可能是独立应用程序(例如 batch 或不需要服务器的集成工作负载。
Spring 是开源的。它有一个庞大而活跃的社区,可以提供持续的反馈 基于各种实际用例。这帮助 Spring 成功 在很长一段时间内演变。
我们所说的“Spring”是什么意思
“Spring”一词在不同的上下文中意味着不同的东西。可以用来指代 Spring Framework 项目本身,这是一切的开始。随着时间的推移,其他Spring 项目已构建在 Spring Framework 之上。大多数情况下,当人们说 “Spring”,它们指的是整个项目家族。本参考文档重点介绍 基础:Spring Framework 本身。
Spring 框架分为多个模块。应用程序可以选择他们需要的模块。 核心是核心容器的模块,包括配置模型和 依赖注入机制。除此之外,Spring 框架还提供了基础 支持不同的应用程序架构,包括消息传递、事务数据和 持久性和网络。它还包括基于 Servlet 的 Spring MVC Web 框架,并且在 parallel,Spring WebFlux 响应式 Web 框架。
关于模块的注意事项:Spring Framework 的 jar 允许部署到模块路径(Java
模块系统)。为了在启用模块的应用程序中使用,Spring Framework jar 附带了Automatic-Module-Name
定义稳定语言级模块名称的清单条目
(spring.core
,spring.context
等)独立于 jar 工件名称。罐子紧随其后
相同的命名模式 with 而不是-
.
–例如spring-core
和spring-context
.
当然,Spring Framework 的 jar 在类路径上也能正常工作。
Spring 和 Spring 框架的历史
Spring 于 2003 年诞生,作为对早期 J2EE 规范复杂性的回应。 虽然有些人认为 Java EE 及其现代继任者 Jakarta EE 属于 与 Spring 竞争,它们实际上是互补的。Spring 编程 模型不采用 Jakarta EE 平台规范;相反,它集成了 从传统 EE 伞中精心挑选的个性化规格:
Spring 框架还支持 Dependency Injection
(JSR 330) 和通用注释
(JSR 250) 规范,哪个应用程序
开发人员可以选择使用提供的 Spring 特定机制来代替
由 Spring Framework 提供。最初,这些是基于共同的javax
包。
从 Spring Framework 6.0 开始,Spring 已升级到 Jakarta EE 9 级别
(例如,Servlet 5.0+、JPA 3.0+),基于jakarta
命名空间而不是
传统的javax
包。EE 9 为最低要求,并且已经支持 EE 10,
Spring 准备为
雅加达 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 框架之外,还有其他 项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch、 除其他外。重要的是要记住,每个项目都有自己的源代码存储库, 问题跟踪器和发布节奏。请参阅 spring.io/projects Spring 项目的完整列表。
设计理念
当您了解框架时,不仅要了解它的作用,还要了解它的作用 它遵循的原则。以下是 Spring 框架的指导原则:
-
在各个层面提供选择。Spring 允许您尽可能晚地推迟设计决策。 例如,您可以通过配置切换持久性提供程序,而无需更改 您的代码。对于许多其他基础设施问题以及与 第三方 API。
-
适应不同的观点。Spring拥抱灵活性,不固执己见 关于应该如何做事。它支持广泛的应用需求 不同的观点。
-
保持强大的向后兼容性。Spring 的演变得到了精心管理 强制版本之间进行很少的重大更改。弹簧支持精心挑选的系列 JDK 版本和第三方库,以方便维护应用程序和 依赖于 Spring 的库。
-
关心 API 设计。Spring 团队在制作 API 上投入了大量的心思和时间 直观且经久耐用。
-
为代码质量设定高标准。Spring 框架非常强调 有意义、最新且准确的 javadoc。这是极少数可以声称 干净的代码结构,包之间没有循环依赖关系。
反馈和贡献
对于作方法问题或诊断或调试问题,我们建议使用 Stack Overflow。单击此处查看要在 Stack Overflow 上使用的建议标记列表。如果您相当确定 Spring Framework 有问题或想提出一个功能,请使用 GitHub 问题。
如果您有解决方案或建议的修复,可以在 Github 上提交拉取请求。但是,请记住 除了最琐碎的问题外,我们希望在问题中提交一张票 跟踪器,进行讨论并留下记录以供将来参考。
有关更多详细信息,请参阅 CONTRIBUTING, 顶级项目页面。
开始
如果您刚刚开始使用 Spring,您可能需要开始使用 Spring 框架,通过创建基于 Spring Boot 应用。Spring Boot 提供了一种快速(且固执己见)的方法来创建 生产就绪基于 Spring 的应用程序。它基于 Spring 框架,有利于 约定重于配置,旨在让您快速启动和运行 尽可能。
您可以使用 start.spring.io 生成基本项目或遵循 “入门”指南之一,例如构建 RESTful Web 服务入门。 除了更容易理解之外,这些指南还非常注重任务,而且大多数 基于 Spring Boot。它们还涵盖了 Spring 投资组合中的其他项目,这些项目 在解决特定问题时,您可能需要考虑。