0%

SpringFramework官方文档翻译-概述

Spring Framework 概述

“Spring”的含义

术语“Spring”在不同的环境中意味着不同的东西。它可用于引用 Spring Framework 项目本身,这是它开始的地方。随着时间推移,其他 Spring 项目已经构建在 Spring Framework 之上。大多数情况下,当人们说“Spring”时,他们指的是整个项目系列。这个参考文档侧重于基础:Spring Framework 本身。

Spring Framework 分离成多个模块。 Applications 可以选择他们所需要的模块。容器的核心模块包括 配置模型和依赖注入机制。除此之外,Spring Framework 为不同的应用程序架构提供了基础支持,包括消息传递,事务数据和持久性以及 web。它还包括 Servlet-based Spring MVC web framework,以及 Spring WebFlux reactive web framework。

关于模块的说明:Spring 的 framework jars 允许部署到 JDK 9 的模块路径(“Jigsaw”)。为了在 Jigsaw-enabled applications 中使用,Spring Framework 5 jars 带有“Automatic-Module-Name”清单条目,它们定义了独立于 jar artifact 名称的稳定 language-level 模块名称(“spring.core”,“spring.context”等)(jars 遵循相同的命名规则“ - “而不是”.“,例如 ”spring-core“和”spring-context“)。当然,Spring 的 framework jars 在 JDK 8 和 9 上都能正常工作。

Spring和SpringFramework的历史

Spring 于 2003 年成立,是对早期J2EE规范复杂性的回应。虽然有些人认为 Java EE 和 Spring 处于竞争中,但实际上,Spring 是对 Java EE 的补充。 Spring 编程模型不包含 Java EE 平台规范;相反它集成了从Java EE 下精心挑选出的来规则:

Spring Framework 还支持Dependency Injection(JSR 330)和 Common Annotations(JSR 250)规范,应用程序开发人员可以选择使用这些规范,而不是 Spring Framework 提供的 Spring-specific 机制。

从 Spring Framework 5.0 开始,Spring 需要 Java EE 7 level(例如 Servlet 3.1,JPA 2.1)作为最低要求 - 同时提供开箱即用的集成与 Java EE 8 level 上的新 API(例如 Servlet 4.0,JSON Binding API)。这使得 Spring 与多种版本程序完全兼容。例如 Tomcat 8 和 9,WebSphere 9 和 JBoss EAP 7。

随着时间推移,Java EE 在应用开发中的作用已经变得更重要。在 Java EE 和 Spring 的早期,应用被创建并部署在服务器上。而今天,在 Spring Boot 的帮助下,应用是以可持续和云友好得方式创建的,嵌入了 Servlet 容器并且很容易更改。从 Spring Framework 5 开始,WebFlux application 甚至不再直接使用 Servlet API,并且可以在不是 Servlet 容器的服务器(例如 Netty)上运行。

Spring 保持不断的创新和发展。除了 Spring Framework 之外,还有其他项目,例如 Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch 等等。重要的是每个项目都有自己的源码 repository,issue 和 release 。有关 Spring 项目的完整列表,请参阅spring.io/projects

设计理念

当您学习 framework 时,重要的是不仅要知道它的作用,还要了解它遵循的原则。以下是 Spring Framework 的指导原则:

  • 在每个层级提供选择。 Spring 让你尽可能晚地决定设计决策。例如,你可以通过配置文件切换持久性提供程序而无需更改代码。对于许多其他基础设置和第三方 API 的整合是同样适用的。
  • Spring 非常灵活。没有固定的规则去规定怎么去设计,它从不同的角度支持广泛的应用程序需求。
  • 保持强大的向后兼容性。 Spring 版本的更迭和重大改变都是经过精心设计的。 Spring 支持精心选择的 JDK 版本和第三方 libraries,以便于维护依赖于 Spring 的 applications 和 libraries。
  • 关注 API 设计。 Spring 团队投入了大量的思考和时间来制作直观的 API,这些 API 可以支撑多个版本和时间的考验。
  • 为代码质量设定高标准。 Spring Framework 是重点强调有意义,最新和准确的javadoc。它是极少数可以宣称自己是代码和结构没有侵入,并且包与包之间没有循环依赖关系的项目之一。

反馈和贡献

对于如何提问,定位,调试,我们建议使用 StackOverflow,我们有questions page 列出要使用的建议标记。如果您非常确定 Spring Framework 中存在问题或想要提建议,请使用JIRA

如果您有解决方案或修复建议,您可以在Github上提交拉取请求。除去微不足道的问题,我们希望提交在issue中进行讨论并保留记录以备将来参考。

有关详细信息,请参阅CONTRIBUTING,最上方项目页面上的指南。

入门

如果您刚刚开始使用 Spring,您可能希望通过创建 Spring Boot 基础应用开始使用 Spring Framework。 Spring Boot 提供了一种快速(现成)的方式来创建 Spring 基础应用。它基于 Spring Framework,优于配置的约定,旨在让您尽快启动和运行应用。

您可以使用start.spring.io创建基本项目,也可以使用“入门”guides中的项目,例如入门构建 RESTful Web 服务。除了更容易理解之外,这些 guides 目标性非常明确,而且他们大多数都是基于 Spring Boot的。它们还涵盖了Spring产品组合中的其他项目,您在解决特定问题时可能要关注这些项目。