Spring Framework 5.3.4 参考指南(官方文档翻译)

https://docs.spring.io/spring-framework/docs/current/reference/html/index.html

Spring Framework 5.3.4 参考指南 (官方文档翻译)

主要模块 包含内容
Overview history, design philosophy, feedback, getting started.
Core IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
Testing Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient.
Data Access Transactions, DAO Support, JDBC, R2DBC, O/R Mapping, XML Marshalling.
Web Servlet Spring MVC, WebSocket, SockJS, STOMP Messaging.
Web Reactive Spring WebFlux, WebClient, WebSocket, RSocket.
Integration Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Caching.
Languages Kotlin, Groovy, Dynamic Languages.

Rod Johnson, Juergen Hoeller, Keith Donald, Colin Sampaleanu, Rob Harrop, Thomas Risberg, Alef Arendsen, Darren Davison, Dmitriy Kopylenko, Mark Pollack, Thierry Templier, Erwin Vervaet, Portia Tung, Ben Hale, Adrian Colyer, John Lewis, Costin Leau, Mark Fisher, Sam Brannen, Ramnivas Laddad, Arjen Poutsma, Chris Beams, Tareq Abedrabbo, Andy Clement, Dave Syer, Oliver Gierke, Rossen Stoyanchev, Phillip Webb, Rob Winch, Brian Clozel, Stephane Nicoll, Sebastien Deleuze, Jay Bryant, Mark Paluch

Copyright © 2002 - 2021 Pivotal, Inc. All Rights Reserved.

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

概要

Spring帮助构建 Java 企业级应用变得更加简单。它提供了你在企业环境中使用Java语言开始时所需要的一切,包括支持 Groovy 和 Kotlin 作为JVM上的替代语言,以及可以根据应用程序的需要来灵活的创建各式各样的架构。

从 Spring Framework 5.1 版本开始,Spring 仅支持 JDK 8 及以上版本,并且提供对 JDK 11 LTS 开箱即用的支持。Java SE 8 update 60 版本是 Java 8 中能够支持的最小版本,但通常来说建议使用最新版本。

Spring 支持不同的应用场景。大型企业中,应用程序通常需要长时间运行在升级周期不受开发人员控制的 JDK 和服务器上。其他的可能是在嵌入式服务器中运行单个 jar,也可能是在云环境。另外可能还可以是不需要服务器的独立应用程序。

Spring 作为开源应用,其拥有一个大型且活跃的社区,由于这个社区能够经常提供基于各种实际情况的案例,所以 Spring 的茁壮成长也得益于该社区。

1. 为何称其为“Spring”

“Spring”这个术语在不同的环境下有着不同的含义。它常常被用来指代 Spring Framework 这个项目本身,同时这个项目也是 Spring 的开始。随着时间的推移,其他新的 Spring 项目都是基于 Spring Framework 构建的。大多数时候,人们称呼“Spring”时,更多的是表达 Spring 整个项目家族。本参考文档重点想介绍的也是 Spring Framework 这个基础应用。

Spring Framework 分为多个模块。构建应用时,可以根据情况自由选择。core container 模块是所有模块中最重要的,它包含了配置模型依赖注入机制。除此之外,Spring Framework 为不同的应用程序架构都提供了基础支持,包括消息队列、事务数据、持久化和web服务。也包含了基于 Servlet 的 SpringMVC,以及 Spring WebFlux 响应式web框架。

A note about modules: Spring’s framework jars allow for deployment to JDK 9’s module path ("Jigsaw"). For use in Jigsaw-enabled applications, the Spring Framework 5 jars come with "Automatic-Module-Name" manifest entries which define stable language-level module names ("spring.core", "spring.context" etc) independent from jar artifact names (the jars follow the same naming pattern with "-" instead of ".", e.g. "spring-core" and "spring-context"). Of course, Spring’s framework jars keep working fine on the classpath on both JDK 8 and 9+.

2. Spring 和 Spring Framework 的发家史

Spring于2003年为了解决 J2EE 规范的复杂性而诞生,尽管当时人们认为 Spring 是想与 JavaEE 进行竞争才出现的,但实际上 Spring 一直将自己视为 Java EE 的补充。Spring 编程模型并没有选择整个 JavaEE 平台规范,而是取其精华。例如:

Spring Framework 还支持依赖注入 (JSR 330) 和通用注解 (JSR 250) 规范,开发者可以选择通过这些规范来替换 Spring Framework 提供的 Spring 内置机制。

从 Spring Framework 5.0 开始,Spring 支持 Java EE 7 (e.g. Servlet 3.1+, JPA 2.1+) 以上的版本,同时在运行时提供基于 Java EE 8 (e.g. Servlet 4.0, JSON Binding API) 版本的新API的现有集成。这使得 Spring 完全兼容例如 Tomcat 8 和 9,WebSphere 9 和 JBoss EAP 7。

随着时间的推移,Java EE 在应用开发中担任的角色开始变化。在 Java EE 和 Spring 早期,创建应用程序是为了部署到应用服务器上。现如今,在 Spring Boot 的帮助下,应用程序可以通过devops和cloud-friendly的方式被创建,Servlet 容器被嵌入其中,且仅需一点点修改。从 Spring Framework 5.0 开始,一个 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,以确保这些API可以跨越多个版本及很多年。
  • 为代码质量设置高标准。Spring Framework非常强调有意义、最新、准确的 javadoc,也是少数代码结构干净且包之间没有循环依赖的项目。

反馈和贡献

对于如何提问、分析、调试问题,我们建议使用 Stack Overflow。单击 此处 来获取使用 Stack Overflow 的建议。如果你确定 Spring Framework 中存在问题或者提出一个feature,请使用 GitHub Issues

如果你有一个解决方案或修复建议,你可以提交一个pull请求在Github上。但请记住,对于一些琐碎的问题外,我们希望能够将 issue 中留下你的问题记录,以便于进行讨论或在未来当作参考。

有关更多详细信息,请参考CONTRIBUTING

快速上手

如果你刚刚开始上手 Spring,你可能想开始通过创建一个基于 Spring Boot 的应用程序来使用 Spring Framework。Spring Boot 提供了一种快速的方式来创建一个基于 Spring 可用于生产环境的应用程序。它基于 Spring 框架,采用约定优于配置的方式,旨在使您尽快启动并运行。

您可以使用 start.spring.io 生成一个基础项目,或者遵循 "Getting Started" guides 中的 Getting Started Building a RESTful Web Service。这些指南不仅易于理解,而且非常注重任务,并且大多数都是基于 Spring Boot 的。它们还涵盖了 Spring 家族中的其他项目,您在解决特定问题时可能要考虑这些项目。

核心内容

测试

数据访问

Web Servlet

Web Reactive

集成

其他语言