Spring 框架概述

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

Spring 支持广泛的应用场景。在大型企业中,应用程序 通常存在很长时间,必须在升级的 JDK 和应用程序服务器上运行 周期超出了开发人员的控制范围。其他的可以作为嵌入服务器的单个 jar 运行, 可能在云环境中。其他应用程序可能是独立应用程序(例如 batch 或不需要服务器的集成工作负载。spring-doc.cadn.net.cn

Spring 是开源的。它有一个庞大而活跃的社区,可以提供持续的反馈 基于各种实际用例。这帮助 Spring 成功 在很长一段时间内演变。spring-doc.cadn.net.cn

我们所说的“Spring”是什么意思

“Spring”一词在不同的上下文中意味着不同的东西。可以用来指代 Spring Framework 项目本身,这是一切的开始。随着时间的推移,其他Spring 项目已构建在 Spring Framework 之上。大多数情况下,当人们说 “Spring”,它们指的是整个项目家族。本参考文档重点介绍 基础:Spring Framework 本身。spring-doc.cadn.net.cn

Spring 框架分为多个模块。应用程序可以选择他们需要的模块。 核心是核心容器的模块,包括配置模型和 依赖注入机制。除此之外,Spring 框架还提供了基础 支持不同的应用程序架构,包括消息传递、事务数据和 持久性和网络。它还包括基于 Servlet 的 Spring MVC Web 框架,并且在 parallel,Spring WebFlux 响应式 Web 框架。spring-doc.cadn.net.cn

关于模块的注意事项:Spring Framework 的 jar 允许部署到模块路径(Java 模块系统)。为了在启用模块的应用程序中使用,Spring Framework jar 附带了Automatic-Module-Name定义稳定语言级模块名称的清单条目 (spring.core,spring.context等)独立于 jar 工件名称。罐子紧随其后 相同的命名模式 with 而不是-.–例如spring-corespring-context. 当然,Spring Framework 的 jar 在类路径上也能正常工作。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 框架还支持 Dependency Injection (JSR 330) 和通用注释 (JSR 250) 规范,哪个应用程序 开发人员可以选择使用提供的 Spring 特定机制来代替 由 Spring Framework 提供。最初,这些是基于共同的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 准备为 雅加达 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 的演变得到了精心管理 强制版本之间进行很少的重大更改。弹簧支持精心挑选的系列 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 Framework 有问题或想提出一个功能,请使用 GitHub 问题spring-doc.cadn.net.cn

如果您有解决方案或建议的修复,可以在 Github 上提交拉取请求。但是,请记住 除了最琐碎的问题外,我们希望在问题中提交一张票 跟踪器,进行讨论并留下记录以供将来参考。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 CONTRIBUTING, 顶级项目页面。spring-doc.cadn.net.cn

开始

如果您刚刚开始使用 Spring,您可能需要开始使用 Spring 框架,通过创建基于 Spring Boot 应用。Spring Boot 提供了一种快速(且固执己见)的方法来创建 生产就绪基于 Spring 的应用程序。它基于 Spring 框架,有利于 约定重于配置,旨在让您快速启动和运行 尽可能。spring-doc.cadn.net.cn

您可以使用 start.spring.io 生成基本项目或遵循 “入门”指南之一,例如构建 RESTful Web 服务入门。 除了更容易理解之外,这些指南还非常注重任务,而且大多数 基于 Spring Boot。它们还涵盖了 Spring 投资组合中的其他项目,这些项目 在解决特定问题时,您可能需要考虑。spring-doc.cadn.net.cn