Spring Framework 1 概述
Spring Framework
來源:
链接:https://docs.spring.io/spring-framework/docs/current/reference/html/index.html
Spring 使创建 Java 企业应用程序变得容易。它提供您所需的一切 需要在企业环境中拥抱Java语言,并支持Groovy。 和 Kotlin 作为 JVM 上的替代语言,并且可以灵活地创建许多 各种体系结构,具体取决于应用程序的需求。从 Spring Framework 6.0 开始, Spring 需要 Java 17+。
Spring 支持广泛的应用场景。在大型企业中,应用程序 经常存在很长时间,并且必须在其升级的JDK和应用程序服务器上运行 周期超出了开发人员的控制范围。其他人可能作为嵌入服务器的单个jar运行, 可能在云环境中。还有一些可能是独立的应用程序(例如批处理 或不需要服务器的集成工作负载。
春天是开源的。它有一个庞大而活跃的社区,提供持续的反馈 基于各种实际用例。这帮助Spring成功 经过很长时间的发展。
“Spring”这个词在不同的语境中有不同的含义。它可以用来指代 Spring Framework 项目本身,它是一切的起点。随着时间的推移,其他 Spring 项目已经建立在 Spring 框架之上。大多数情况下,当人们说“Spring”时,他们指的是整个项目系列。本参考文档侧重于基础:Spring 框架本身。
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”清单条目,它定义了稳定的语言级模块名称(“spring.core”、“spring.context”等),独立于jar 工件名称(jar 遵循相同的命名模式,使用“-”而不是“.”,例如“spring-core”和“spring-context”)。当然,Spring 的框架 jar 可以在 JDK 8 和 9+ 的类路径上正常工作。
Spring 于 2003 年应运而生,以应对早期 J2EE规范的复杂性。虽然有些人认为 Java EE 及其现代继承者 Jakarta EE 与 Spring 竞争,但实际上它们是互补的。Spring 编程模型不包含 Jakarta EE 平台规范;相反,它集成了从传统 EE 伞中精心挑选的个别规范:
-
小服务程序 API ( JSR 340 )
-
WebSocket API ( JSR 356 )
-
并发实用程序 ( JSR 236 )
-
JSON 绑定 API ( JSR 367 )
-
Bean 验证(JSR 303)
-
联合行动计划 ( JSR 338 )
-
JMS(JSR 914)
-
以及用于事务协调的 JTA/JCA 设置(如有必要)。
Spring Framework 还支持 Dependency Injection ( JSR 330 ) 和 Common Annotations ( JSR 250 ) 规范,应用程序开发人员可以选择使用这些规范来代替 Spring Framework 提供的特定于 Spring 的机制。最初,那些是基于通用javax
包的。
依赖注入(Dependency Injection) Spring的两个核心内容为控制反转(Ioc)和面向切面(AOP),
从 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 与作为 Web 服务器的 Tomcat 10.1、Jetty 11 和 Undertow 2.3 以及 Hibernate ORM 6.1 完全兼容。
随着时间的推移,Java/Jakarta EE 在应用程序开发中的作用发生了变化。在 J2EE 和 Spring 的早期,创建应用程序是为了部署到应用程序服务器。如今,在 Spring Boot 的帮助下,应用程序以开发运维和云友好的方式创建,嵌入了 Servlet 容器并且更改起来微不足道。从 Spring Framework 5 开始,WebFlux 应用程序甚至不直接使用 Servlet API,而是可以在非 Servlet 容器的服务器(例如 Netty)上运行。
Spring 不断创新和发展。除了 Spring Framework,还有其他项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。请务必记住,每个项目都有自己的源代码存储库、问题跟踪器和发布节奏。有关 Spring 项目的完整列表,请参阅spring.io/projects。
-
当您了解一个框架时,重要的是不仅要知道它做什么,还要知道它遵循什么原则。以下是 Spring 框架的指导原则:
-
在每个级别提供选择。Spring 让您尽可能晚地推迟设计决策。例如,您可以在不更改代码的情况下通过配置切换持久性提供程序。许多其他基础设施问题和与第三方 API 的集成也是如此。
-
包容不同的观点。Spring 拥抱灵活性,并且对事情应该如何完成没有固执己见。它以不同的视角支持广泛的应用需求。
-
保持强大的向后兼容性。Spring 的演变经过精心管理,以强制在版本之间进行一些重大更改。Spring 支持精心选择的一系列 JDK 版本和第三方库,以方便维护依赖于 Spring 的应用程序和库。
-
关心API设计。Spring 团队投入了大量的心思和时间来制作直观的 API,并且可以跨多个版本和多年使用。
-
为代码质量设定高标准。Spring 框架非常强调有意义的、最新的和准确的 javadoc。它是极少数可以声称代码结构清晰且包之间没有循环依赖关系的项目之一。
对于操作方法问题或诊断或调试问题,我们建议使用 Stack Overflow。单击 此处 获取要在 Stack Overflow 上使用的建议标签列表。如果您相当确定 Spring Framework 中存在问题或想建议某个功能,请使用GitHub Issues。
如果您有解决方案或建议的修复方法,可以在 Github上提交拉取请求。但是,请记住,除了最琐碎的问题之外,我们希望在问题跟踪器中提交一张票,在那里进行讨论并留下记录以供将来参考。
有关更多详细信息,请参阅CONTRIBUTING顶级项目页面上的指南。
如果您刚刚开始使用 Spring,您可能希望通过创建基于Spring Boot的应用程序来开始使用 Spring 框架。Spring Boot 提供了一种快速(且固执己见)的方法来创建生产就绪的基于 Spring 的应用程序。它基于 Spring Framework,有利于约定优于配置,旨在让您尽快启动和运行。
您可以使用start.spring.io生成基本项目或遵循“入门”指南之一,例如“ 开始构建 RESTful Web 服务” 。除了更容易理解之外,这些指南非常专注于任务,其中大部分都基于 Spring Boot。它们还涵盖了您在解决特定问题时可能要考虑的 Spring 产品组合中的其他项目。