(02)Spring框架概述

Spring使创建Java企业应用程序变得容易。它提供了在企业环境中接受Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并可以根据应用程序的需求灵活地创建多种体系结构。从Spring Framework 6.0开始,Spring需要Java 17+。

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

Spring是开源的。它有一个庞大而活跃的社区,根据不同的现实世界用例提供持续的反馈。这帮助Spring在很长一段时间内成功地进化。

我们所说的“Spring”是什么意思

 “Spring”一词在不同的语境中意味着不同的事物。它可以用来引用Spring框架项目本身,这就是一切的起点。随着时间的推移,其他Spring项目已经构建在Spring Framework之上。通常,当人们说“Spring”时,他们指的是整个项目家族。本参考文档侧重于基础:Spring Framework本身。

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

关于模块的注意事项:Spring的framework jar允许部署到JDK9的模块路径(“Jigsaw”)。为了在支持Jigsaw的应用程序中使用,Spring Framework 5 jar附带了“自动模块名称”清单条目,这些条目定义了独立于jar工件名称的稳定语言级模块名称(“Spring.core”、“Spring.context”等)(jar遵循相同的命名模式,用“-”代替“.”,例如“Spring-core”和“Spring-context”)。当然,Spring的framework jar在JDK8和9+的类路径上都能很好地工作。

Spring的历史与Spring框架

Spring诞生于2003年,是对早期J2EE规范复杂性的回应。虽然有些人认为Java EE及其现代继任者Jakarta EE与Spring竞争,但它们实际上是互补的。Spring编程模型不包含Jakarta EE平台规范;相反,它与传统EE伞中精心选择的单个规范相集成:

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

Spring框架还支持依赖注入(JSR330)和通用注释(JSR250)规范,应用程序开发人员可以选择使用这些规范来代替Spring框架提供的Spring特定机制。最初,这些都是基于常见的javax包。

从Spring Framework 6.0开始,Spring已经升级到Jakarta EE 9级别(例如Servlet 5.0+、JPA 3.0+),基于Jakarta命名空间而不是传统的javax包。由于EE 9是最低的,并且已经支持EE 10,Spring准备为Jakarta EE API的进一步发展提供开箱即用的支持。Spring Framework 6.0与Tomcat10.1、Jetty 11和Undertow 2.3作为web服务器完全兼容,还与Hibernate ORM 6.1完全兼容。

 随着时间的推移,Java/Jartarta EE在应用程序开发中的作用不断演变。在J2EE和Spring的早期,应用程序是为了部署到应用程序服务器而创建的。如今,在Spring Boot的帮助下,应用程序是以一种对devops和云友好的方式创建的,其中嵌入了Servlet容器,而且更改起来很简单。从SpringFramework5开始,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框架非常强调有意义的、当前的和准确的javadoc。它是为数不多的几个可以声明干净的代码结构、包之间没有循环依赖关系的项目之一。

反馈和贡献

对于操作方法问题或诊断或调试问题,我们建议使用堆栈溢出。单击此处查看要在堆栈溢出上使用的建议标记的列表。如果你相当确定Spring Framework中存在问题,或者想推荐一个功能,请使用GitHub Issues。

如果你有一个解决方案或建议的修复方案,你可以在Github上提交一个拉取请求。然而,请记住,对于除最琐碎的问题外的所有问题,我们希望在问题跟踪器中提交个标签,在那里进行讨论并留下记录以供将来参考。

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

入门

如果您刚开始使用Spring,您可能希望通过创建一个基于Spring Boot的应用程序来开始使用Spring Framework。Spring Boot提供了一种快速(且固执己见)的方法来创建一个可用于生产的基于Spring的应用程序。它基于Spring框架,支持约定而非配置,旨在让您尽快启动和运行。

您可以使用start.spring.io生成一个基本项目,也可以遵循“入门”指南之一,例如“入门构建RESTful Web服务”。除了更容易消化外,这些指南非常注重任务,其中大多数都是基于Spring Boot的。它们还涵盖了Spring模块中您在解决特定问题时可能需要考虑的其他项目。


主目录(Spring Framework文档)

(02)核心技术 →

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值