首页>>后端>>Spring->Spring Framework Overview

Spring Framework Overview

时间:2023-11-30 本站 点击:0

简介

官方文档

Spring是创建java应用变得更易用。它提供了在企业应用环境中使用java语言所需的一切,支持Groovy和Kotlin作为运行在JVM上的可选语言,并根据应用所需灵活的创建多种框架。从Spring Framework 5.1,Spring 需要JDK 8+(Java SE 8+)并为JDK11 LTS提供开箱即用的支持。建议将Java SE 8 Update 60(java 8)作为最低的补丁版本,但是通常建议使用最新的补丁版本。

Spring支持广泛的应用场景。在一个大型的企业中,应用往往存在很长时间,并且必须在升级周期不受开发人员控制的JDK和应用服务上。其他可能作为嵌入式服务的单个jar运行,可能在云环境中。还有其他不需要server的单独应用(例如批量或者集成的工作负载)。

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

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

“Spring”术语在不同上下文意味着不同的东西。它可以被使用指代Spring Framework项目本身,这就是一切的开始。随着时间推移,其他Spring项目是被构建在Spring Framework之上。大多数情况下,人们说“Spring”时,他们指的是整个项目系列。本文主要侧重于基础:Spring Framework本身。

Spring Framewoek是被分为多个模块。应用可以选择需要的模块。核心是core container模块,包括一个配置模块和一个依赖注入机制。除此之外,Spring Framework为不同的应用架构提供基本支持,包括消息传递、事务数据和持久性以及Web。它还包括基于Servlet的Spring MVC web Framework,以及平行的Spring WebFlux reactive web framework。

关于模块的说明:Spring的framework运行部署到JDK 9的模块路径("Jigsaw")中。为了在Jigsaw-enables应用中使用,Spring Framework 5 jar带有“Automaic-Module-Name”主要条目,这些条目定义了固定语言级模块名称("spring.core",“spring.context”等),独立于jar工程名(jar遵循同一规则使用“-”代替“.”,使用"-"代替".",例如"spring-core"和"spring-context")。

Spring和Spring Framework的历史

Spring 于2003年应运而生,以应对早期J2EE规范的复杂性。虽然一些人认为Java EE和Spring是在竞争,实际上Spring 是对java EE的补充。Spring编程模型不包含Java EE平台规范,相反,它集成了来自EE umbrella中精心挑选的单个规格:

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)

以及按需JTA/JCA的安装用于事务协调。

Spring Framework还支持Dependency Injection( JSR 330)和Common Annotations(JSR 250)规范,应用开发程序员可以选择使用去代替由Spring Framework提供的Spring特定机制。

从Spring Framework 5.0开始,Spring需要至少Java EE 7级别(例如Servlet 3.1+、JPA 2.1+)-同时提供开箱即用集成Java EE 8的新APIs(例如Servlet 4.0,JSON Bingding API)当在运行时需要时。这使Spring完全兼容例如Tomcat 8和9、WebSphere 9和JBoss EAP 7。

随着时间推移,Java EE在应用开发中的作用不断发展。在Java EE和Spring早期,应用是被创建被发布到一个应用server。今天,在Spring Boot的帮助下,应用是被创建在一个devops-和cloud-friendly方式,使用嵌入式Servelt容器和更简单的更改。从Spring Framework 5开始,WebFlux应用甚至不直接使用Servlet API并且可以运行在不是Servlet容器(例如Netty)的server上。

Spring 不断创新和发展。除了 Spring 框架之外,还有其他项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。重要的是要记住,每个项目都有自己的源代码存储库、问题跟踪器和发布节奏。有关Spring 项目的完整列表,请参阅spring.io/projects。

设计理解

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

提供各种级别的选择。Spring允许你尽可能晚的推迟设计决策。例如你可以选择持久化提供通过配置而不是你的代码。许多其他的底层问题和第三方APIs的集成也是如此。

包容不同的观点。Spring拥抱灵活并对事情不是固执己见。它以不同的视角支持广泛的应用需求。

保持强大的向后兼容。Spring的演变经过精心的管理,强制在版本之间出现很少的破坏改变。Spring支持精心选择JDK版本范围和第三方库,以方便维护应用和Spring的依赖。

精心的API设计。Spring 团队投入很多精力和时间去使APIs更直观,这些API可以跨多个版本和时间。

为代码质量设定高的标准。Spring Framework非常强调有意义、最新、精准的javadoc。它是极少数可以声称简洁的代码结构并没有包循环依赖的项目之一。

反馈与贡献

对于操作问题或诊断或调试问题,我们建议使用 Stack Overflow。单击 此处 获取在 Stack Overflow 上使用的建议标签列表。如果您相当确定 Spring Framework 中存在问题或想要提出功能建议,请使用GitHub 问题。

如果您有解决方案或建议的修复方案,您可以在Github上提交拉取请求 。但是,请记住,对于除最微不足道的问题之外的所有问题,我们希望在问题跟踪器中提交一张票,在那里进行讨论并留下记录以供将来参考。

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/4456.html