翻译:Spring 框架概述

本贴最后更新于 2100 天前,其中的信息可能已经时移世易

翻译:Spring 框架概述

原文链接:https://docs.spring.io/spring/docs/5.0.x/spring-framework-reference/overview.html#overview

版本:5.0.7.RELEASE

Spring 可以轻松创建 Java 企业应用程序。它提供了在企业环境中支持 Java 语言所需的一切,并支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,而且可根据应用程序的需求灵活地创建多种体系结构。从 Spring Framework 5.0 开始,Spring 需要 JDK 8+(Java SE 8+),并且已经为 JDK 9 提供了开箱即用的支持。

Spring 支持广泛的应用场景。在大型企业中,应用程序通常存在很长时间,并且必须在升级周期超出开发人员控制的 JDK 和应用程序服务器上运行。其他人可能会将嵌入式服务器作为单个 jar 运行,可能在云环境中运行。而另一些可能是不需要服务器的独立应用程序(如批处理或集成工作负载)。

Spring 是开源的。它拥有一个庞大而活跃的社区,可根据各种实际用例提供持续的反馈。这有助于 Spring 在很长一段时间内成功发展。

1.“Spring”的含义

术语“Spring”的含义在不同的上下文语境中不尽相同。大部分情况下它指代 spring 框架本身,也是最开始的含义。后来,出现了很多其他基于 Spring 框架构建的项目。但是大部分情况下当人们说 spring 的时候,他们的意思是整个 spring 项目体系。本篇说明将重点放在 spring 框架本身。

spring 框架分成不同模块,应用只需选择需要的模块。核心是 core 容器模块,包括一个配置模块和一个依赖注入机制。除此之外,spring 框架为不同的应用架构提供基础支持,包括消息传递,事务数据和持久化以及 Web。它还包含基于 Servlet 的 Spring MVC Web 框架以及 Spring WebFlux 反应式 Web 框架。

模块说明:spring 框架的 jar 包语序部署到 JDK9 的组件路径("Jigsaw")。为了在启用 Jigsaw 的应用程序中使用,Spring Framework 5 jar 包带有“Automatic-Module-Name”词典,它定义了语言层面独立于 jar 名称架构的稳定的名称(即用“-”代替“.”,比如"spring-core" and "spring-context")。因此,Spring 框架在 JDK8 和 JDK9 都能正常工作。

2.Spring 和 Spring 框架的历史

Spring 于 2003 年应运而生,以应对早期 J2EE 规范的复杂性。虽然有人认为 Java EE 和 Spring 竞争激烈,但 Spring 实际上是对 JavaEE 的补充。Spring 编程模型不支持 Java EE 平台规范; 相反,它集成了从 EE umbrella 精心挑选的个别规格:

  • Servlet API(JSR 340)
  • WebSocket API(JSR 356)
  • 并发实用程序(JSR 236)
  • JSON 绑定 API(JSR 367)
  • Bean 验证(JSR 303)
  • JPA(JSR 338)
  • JMS(JSR 914)
  • 以及必要时用于事务协调的 JTA/JCA 设置。

Spring 框架同时也支持依赖注入(JSR330)和公共声明(JSR250)规范,应用程序开发人员可以选择使用这些规范,而不是 Spring 框架提供的 Spring 特定机制。

从 Spring Framework 5.0 开始,Spring 至少需要 Java EE7 级别(例如 Servlet3.1+,JPA 2.1+),同时在 Java EE 8 级别上提供运行时的开箱即用的新 API 集成(例如 Servlet 4.0,JSON 绑定 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 框架之外,还有其他项目,比如 Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch 等等。重要的是要记住每个项目都有自己的源码库,issue 跟踪和发布节奏。有关 Spring 项目的完整列表,请参阅 spring.io/projects

3.设计哲学

当你学习一个框架的时候,知道它做了什么和重要,但更重要的了解他遵从的原则。下面是 spring 设计时的一些主要原则:

  • 在各个层面提供选择。Spring 允许您尽可能迟地推迟设计决策。例如,您可以通过配置切换持久化程序,而无需更改代码。许多其他基础架构以及与第三方 API 的集成也是如此。

  • 包容各种观点。spring 拥抱灵活,并没有对如何完成事情持有自己的看法。它以不同的视角支持广泛的应用需求。

  • 保持强大的后向兼容性。Spring 的演变经过精心设计,可以在版本之间进行一些重大改变。Spring 支持精心挑选的 JDK 版本和第三方库,以便于维护依赖于 Spring 的应用程序和库。

  • 关心 API 设计。Spring 团队花费了大量的精力和时间来制作直观的 API,并在多年里支持多种版本。

*为代码质量设定高标准。Spring Framework 强调有意义,最新且准确的 Javadoc。它是少数几个可以声明干净的代码结构的程序之一,package 之间没有循环依赖关系。

4.反馈和贡献

对于操作方法问题、诊断问题或调试问题,我们建议使用 StackOverflow,我们有一个问题页面列出了要使用的建议标签。如果您确信 Spring 框架存在问题或者想要推荐一个功能,请使用 JIRA issue tracker

如果你有一个解决方案或建议修复,你可以在 Github 上提交一个 pull 请求 。但是请记住,除了最琐碎的问题外,我们希望在 issue tracker 中提交,在那里进行讨论并留下记录以备将来参考。

有关更多详细信息,请参阅贡献顶级项目页面上的指南。

5.入门

如果您刚刚开始使用 Spring,则可能需要创建一个基于 Spring Boot 的应用程序来开始使用 Spring Framework。Spring Boot 提供了一种快速(武断)的方式来创建一个生产就绪的基于 Spring 的应用程序。它基于 Spring Framework,偏爱公共约定而不是配置,并且旨在让您尽快启动并运行。

您可以使用 start.spring.io 生成一个基本项目,或者按照入门指南之一,例如 构建 RESTful Web 服务入门。除了易于消化外,这些指南非常专注于业务,其中大部分都基于 Spring Boot。他们还涵盖了您在解决特定问题时可能需要考虑的 Spring 组合中的其他项目。

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 153 关注
  • 翻译
    57 引用 • 83 回帖 • 1 关注
  • 官方文档
    3 引用 • 1 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...