Spring框架概述

备注:5.2.25.RELEASE版本

        Spring很容易创建Java企业级应用。它提供了在企业环境中采用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并可以根据应用程序的需求灵活创建多种架构。从Spring Framework 5.1开始,Spring需要JDK 8+(Java SE 8+),并为JDK 11 LTS提供开箱即用的支持。建议将Java SE 8更新60作为Java 8的最低补丁版本,但通常建议使用最新的补丁版本。

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

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

什么是Spring?

Spring一词有着不同的含义,它可以用来指代Spring Framework项目本身,这是它的起点。随着时间的推移,其他Spring项目都是在Spring Framework的基础上构建的。通常,当人们说“Spring”时,他们指的是整个项目家族。本参考文档侧重于基础:Spring框架本身。

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

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

Spring和Spring框架的历史

Spring 于2003年诞生,作为对早期J2EE规范复杂性的一种回应。虽然有些人认为Java EE与Spring是竞争关系,但实际上Spring是对Java EE的补充。Spring编程模型并没有采纳Java EE平台规范,而是有选择地与Java 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)
  • as well as JTA/JCA setups for transaction coordination, if necessary.

Spring框架还支持依赖注入(JSR 330)和通用注解(JSR 250)规范,应用程序开发者可以选择使用这些标准机制,而不是Spring框架提供的特定于Spring的机制。

从Spring框架5.0开始,Spring要求最低为Java EE 7级别(例如Servlet 3.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框架5.0开始,WebFlux应用程序甚至不需要直接使用Servlet API,并且可以在非Servlet容器的服务器(如Netty)上运行。

Spring持续创新和进化。除了Spring框架之外,还有其他项目,例如Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch等。重要的是要记住,每个项目都有自己的源代码仓库、问题跟踪系统和发布周期。可以在spring.io/projects上查看所有Spring项目的完整列表。

设计理念

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

  • 在每一层都提供选择。Spring 让你尽可能地将设计决策推迟。例如,你可以通过配置来切换持久化提供者,而无需更改你的代码。对于许多其他的基础设施关注点以及与第三方 API 的集成来说,也是如此。
  • 容纳多样化的视角。Spring 拥抱灵活性,并不对事情应该如何做提出固定意见。它以不同的视角支持广泛的应用需求。
  • 保持强大的向后兼容性。Spring 的演进一直得到谨慎的管理,以确保版本之间很少出现破坏性的变更。Spring 支持精心挑选的 Java 开发工具包(JDK)版本和第三方库,以便于依赖于 Spring 的应用程序和库的维护。
  • 重视 API 设计。Spring 团队投入了大量的思考和时间来创建直观的 API,并确保这些 API 在多个版本和多年间都能保持稳定和一致。
  • 设定高标准的代码质量。Spring 框架非常重视有意义、时效性强且准确的 Javadoc。它是为数不多的几个可以声称拥有干净的代码结构并且在各包之间没有循环依赖的项目之一。

反馈和贡献

对于操作指南类的问题或是诊断和调试方面的问题,我们建议使用 Stack Overflow。点击这里获取在 Stack Overflow 上建议使用的标签列表。如果你确定 Spring 框架中存在某个问题,或者想要提议一个新功能,请使用 GitHub Issues。

如果你已经有了一个解决方案或有建议的修复方法,你可以在 GitHub 上提交一个拉取请求(pull request)。然而,请记住,除了最简单的問題之外,我们期望你在问题跟踪器中提交一张工单,在那里进行讨论并留下可供将来参考的记录。

如需了解更多详情,请参阅项目顶级页面上的《贡献指南》(CONTRIBUTING)。

入门指南

如果你刚开始接触 Spring,你可能希望从创建一个基于 Spring Boot 的应用开始使用 Spring 框架。Spring Boot 提供了一种快速(且具有指导性)的方式来创建生产级的 Spring 应用。它基于 Spring 框架,推崇约定优于配置的原则,并且设计的目的就是让你能够尽快上手。

你可以使用 start.spring.io 来生成一个基础项目,或者跟随某个“入门指南”,比如《开始构建 RESTful Web 服务》。这些指南不仅更容易理解,而且非常专注于特定任务,其中大多数都是基于 Spring Boot 的。它们还涵盖了 Spring 产品组合中的其他项目,这些项目在解决特定问题时你可能也会考虑使用。

参考文档:Spring Framework Overview

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值