Spring Framework文档

基于spring 5.3.21版本
本参考文档重点介绍基础:Spring 框架本身。



文章目录

  • Spring Framework文档
  • 前言
  • 一、Spring是什么?
  • 二、Spring 和 Spring 框架的历史
  • 三、设计理念
  • 总结



前言

框架概述:优势

  1. 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 的最低修补程序版本,但通常建议使用最新的修补程序版本。
  2. Spring支持广泛的应用场景。在大型企业中,应用程序通常存在很长时间,并且必须在JDK和应用程序服务器上运行,其升级周期超出了开发人员的控制范围。其他的可能作为嵌入服务器的单个jar运行,可能在云环境中。还有一些可能是不需要服务器的独立应用程序(例如批处理或集成工作负载)。
  3. Spring是开源的。它有一个庞大而活跃的社区,根据各种现实世界的用例提供持续的反馈。这帮助Spring在很长一段时间内成功发展。

一、Spring是什么?

“Spring”这个词在不同的语境中意味着不同的东西。它可以用来引用Spring Framework项目本身,这是一切开始的地方。随着时间的推移,其他Spring项目已经建立在Spring框架之上。大多数情况下,当人们说“Spring”时,他们指的是整个项目家族。

Spring框架分为多个模块。应用程序可以选择所需的模块。核心是核心容器的模块,包括配置模型和依赖关系注入机制。除此之外,Spring框架还为不同的应用程序架构提供了基础支持,包括消息传递,事务数据和持久性以及Web。它还包括基于Servlet的Spring MVC Web框架,以及并行的Spring WebFlux反应式Web框架。

关于模块的说明:Spring的框架jar允许部署到JDK 9的模块路径(“Jigsaw”)。为了在支持Jigsaw的应用程序中使用,Spring Framework 5 jars附带了“Automatic-Module-Name”清单条目,这些条目定义了稳定的语言级模块名称(“spring.core”,“spring.context”等),独立于jar工件名称(jar遵循相同的命名模式,“-”而不是“.”,例如“spring-core”和“spring-context”)。当然,Spring的框架在JDK 8和9+的类路径上都能良好的运行。

二、Spring 和 Spring 框架的历史

Spring 于 2003 年应运而生,以应对早期 J2EE 规范的复杂性。虽然有些人认为 Java EE 和 Spring 在竞争,但 Spring 实际上是对 Java EE 的补充。 Spring 编程模型不包含 Java EE 平台规范;相反,它集成了从 EE 保护伞中精心挑选的各个规格:

  • Servlet API (JSR 340)
  • WebSocket API (JSR 356)
  • Concurrency Utilities (JSR 236)
  • JSON Binding API (JSR 367)
  • Bean Validation (JSR 303)
  • JPA (JSR 338)
  • JMS (JSR 914)
  • 事务协调的 JTA/JCA 设置

Spring Framework 还支持 Dependency Injection (JSR 330) 和 Common Annotations (JSR 250) 规范,应用程序开发人员可以选择使用它们来代替 Spring Framework 提供的特定于 Spring 的机制。
从 Spring Framework 5.0 开始,Spring 至少需要 Java EE 7 级别(例如 Servlet 3.1+、JPA 2.1+),同时在 Java EE 8 级别提供与更新 API 的开箱即用集成(例如 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 Framework,还有其他项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。重要的是要记住,每个项目都有自己的源代码存储库、问题跟踪器和发布节奏。有关 Spring 项目的完整列表,请参阅 spring.io/projects

三、设计理念

当你了解一个框架时,重要的是不仅要知道它做了什么,而且要知道它遵循什么原则。以下是 Spring Framework 的指导原则:

  1. 提供每个级别的选择。 Spring 允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础设施问题以及与第三方 API 的集成也是如此。
  2. 可以集成不同的第三方框架。 Spring拥有很强的灵活性,能从不同的角度对应用需求进行广泛的支持。
  3. 保持强大的向后兼容性。 Spring 的演变经过精心管理,在版本之间几乎没有发生重大变化。 Spring 支持精心挑选的一系列 JDK 版本和第三方库,以方便维护依赖于 Spring 的应用程序和库。
  4. API设计成熟度高。 Spring 团队投入大量精力和时间来制作直观且可跨多个版本和多年使用的 API。
  5. 为代码质量设定高标准。 Spring 框架非常强调有意义的、最新的和准确的 javadoc。它是极少数可以声称代码结构清晰且包之间没有循环依赖关系的项目之一。