《Spring Framework实战》5:Spring Framework 概述

news2025/1/9 7:07:49
欢迎观看《Spring Framework实战》视频教程

Spring 使创建 Java 企业应用程序变得容易。它为您提供一切 需要在企业环境中采用 Java 语言,并支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以灵活地创建许多 类型的架构。从 Spring Framework 6.0 开始, Spring 需要 Java 17+。

Spring 支持广泛的应用程序场景。在大型企业中,应用程序 通常存在很长时间,并且必须在升级后的 JDK 和应用程序服务器上运行 cycle 超出了开发人员的控制范围。其他 API 可能作为嵌入了服务器的单个 jar 运行, 可能在云环境中。而其他应用程序可能是独立的应用程序(例如 batch 或集成工作负载)的 Ev Mc.

Spring 是开源的。它有一个庞大而活跃的社区,提供持续的反馈 基于各种实际用例。这帮助 Spring 成功了 在很长一段时间内演变。

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

术语 “Spring” 在不同的上下文中意味着不同的事物。它可以用来指代 Spring Framework 项目本身,这是一切开始的地方。随着时间的推移,其他 Spring 项目已经构建在 Spring 框架之上。大多数情况下,当人们说 “Spring”,他们指的是整个项目系列。本参考文档重点介绍 基础:Spring Framework 本身。

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

关于模块的说明:Spring Framework 的 jar 允许部署到模块路径(Java 模块系统)。为了在启用模块的应用程序中使用,Spring 框架 jar 带有定义稳定语言级模块名称的清单条目 (、 等)独立于 jar 工件名称。罐子紧随其后 相同的命名模式,例如 instead 而不是 – 和 . 当然,Spring Framework 的 jar 在 Classpath 上也能正常工作。Automatic-Module-Namespring.corespring.context-.spring-corespring-context

    1. Spring 和 Spring 框架的历史

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

  1. Servlet API (JSR 340)
  2. WebSocket API (JSR 356)
  3. 并发实用程序 (JSR 236)
  4. JSON 绑定 API (JSR 367))
  5. Bean 验证 (JSR 303)
  6. JPA (JSR 338)
  7. JMS (JSR 914)
  8. 以及用于事务协调的 JTA/JCA 设置(如有必要)。

Spring Framework 还支持依赖注入 (JSR 330) 和通用注释 (JSR 250) 规范,哪个应用程序 开发人员可以选择使用提供的特定于 Spring 的机制 由 Spring 框架。最初,这些是基于通用包的。javax

从 Spring Framework 6.0 开始,Spring 已升级到 Jakarta EE 9 级别 (例如,Servlet 5.0+、JPA 3.0+),基于名称空间而不是 传统软件包。以 EE 9 为最低版本并且已经支持 EE 10, Spring 已准备好为 Jakarta EE API 的调用。Spring Framework 6.0 与 Tomcat 10.1 完全兼容, Jetty 11 和 Undertow 2.3 作为 Web 服务器,以及 Hibernate ORM 6.1。jakartajavax

随着时间的推移,Java/Jakarta EE 在应用程序开发中的作用发生了变化。在 在 J2EE 和 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 Tracker 和 Release Cadence 的 Cadence 进行更新。请参阅 spring.io/projects Spring 项目的完整列表。

    1. 设计理念

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

  1. 在每个级别提供选择。Spring 允许您尽可能晚地推迟设计决策。 例如,您可以通过配置切换持久性提供程序,而无需更改 您的代码。许多其他基础设施问题以及与 第三方 API。
  2. 容纳不同的观点。Spring 拥抱灵活性,不固执己见 关于应该如何做事。它支持广泛的应用需求 不同的观点。
  3. 保持强大的向后兼容性。Spring 的演变得到了精心管理 强制在版本之间进行少量的重大更改。Spring 支持精心挑选的范围 JDK 版本和第三方库,以方便维护应用程序和 依赖于 Spring 的库。
  4. 关心 API 设计。Spring 团队在制作 API 上投入了大量的思考和时间 它们很直观,并且在许多版本和多年中都适用。
  5. 为代码质量设定高标准。Spring Framework 非常强调 有意义、最新且准确的 Javadoc。这是极少数可以声称的项目之一 干净的代码结构,包之间没有循环依赖关系。

    1. 反馈和贡献

对于操作方法问题或诊断或调试问题,我们建议使用 Stack Overflow。单击此处查看可在 Stack Overflow 上使用的建议标签列表。如果你相当确定 Spring Framework 中存在问题或想建议某个功能,请使用 GitHub 问题。

如果您有解决方案或建议的修复方法,可以在 Github 上提交拉取请求。但是,请记住 对于除最琐碎的问题之外的所有问题,我们期望在该问题中提交一个工单 跟踪器,在这里进行讨论并留下记录以供将来参考。

有关更多详细信息,请参阅 CONTRIBUTING、 顶层项目页面。

    1. 开始

如果您刚刚开始使用 Spring,则可能需要开始使用 Spring 框架,通过创建基于 Spring Boot 的 应用。Spring Boot 提供了一种快速(且固执己见)的方法来创建一个 生产就绪的基于 Spring 的应用程序。它基于 Spring 框架,偏爱 约定优于配置,旨在让您快速启动并运行 尽可能。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逆向百例3——全国招标公告

所有内容仅供学习交流使用! 全国招标公告搜索引擎 解决开发者工具打不开问题接口分析解密数据 本次逆向主要是解决该页面接口返回的数据,但是接口所返回的数据是密文,经过分析用的是标准DES,解密成明文即可。 解决开发者工具打不…

windows10下安装Microsoft SQL Server 2016

一、下载安装包 网站:MSDN, 我告诉你 - 做一个安静的工具站 选择需要的版本,点击详细信息,复制ed2k链接,打开eMule或迅雷,新建下载,粘贴链接,开始下载。 下载好的文件是一个.iso镜像文件。 二、…

一、二极管(应用篇)

1.5普通二极管应用 1.5.1钳位电路 利用二极管的固定的导通电压,在二极管处并联用电器,达到用电器的工作电压相对稳定。如果电源处有尖峰电压,则可以通过二极管导入到5v的电源内,防止此尖峰电压干扰用电器 ,起到对电路的…

SpringCloud系列教程:微服务的未来(十)服务调用、注册中心原理、Nacos注册中心

本博客将重点介绍服务调用和注册中心的原理,特别是以 Nacos 为例,详细讲解 Nacos 注册中心如何实现服务的注册与发现。同时,分析 Nacos 注册中心在分布式微服务中的应用,帮助开发者更好地理解其工作机制。 目录 前言 微服务拆分…

eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)

ACL实验(Access Control List访问控制列表)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…

benchANT 性能榜单技术解读 Part 1:写入吞吐

近期,国际权威数据库性能测试榜单 benchANT 更新了 Time Series: Devops(时序数据库)场景排名,KaiwuDB 数据库在 xsmall 和 small 两类规格下的时序数据写入吞吐、查询吞吐、查询延迟、成本效益等多项指标刷新榜单原有数据纪录。在…

消息队列MQ(二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MQ学习笔记 前言一、发送者的可靠性1. 生产者重试机制2. 生产者确认机制3. 实现生产者确认 二、MQ的可靠性1. 数据持久化2. LazyQueue 前言 在用MQ实现异步调用时&#xff0…

HTML基础入门——简单网页页面

目录 一,网上转账电子账单 ​编辑 1,所利用到的标签 2,代码编写 3,运行结果 二,李白诗词 1,所用到的标签 2,照片的编辑 3,代码编写 4,运行结果 一,网…

365天深度学习训练营:第N2周:构建词典

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 本周任务: 使用N1周的.txt 文件构建词典,停用词请自定义 1. 导入数据 from torchtext.vocab import build_vocab_from_iterator from collection…

vue2迁移至rsbuild

背景 由于远程机器配置较低,每次运行vue2项目都会非常卡。后期项目文件、路由更多的时候,启动到一半直接会跳出open too many files类似的错误,尝试将路由屏蔽掉只剩下开发所需的一个路由也不行(不是说webpack的打包是全部打包&am…

升级 Spring Boot 3 配置讲解 — 新版本的秒杀系统怎么做?

学会这款 🔥全新设计的 Java 脚手架 ,从此面试不再怕! 1. Spring Boot 3 升级指南 在升级 Spring Boot 3 之前,首先需要确保你的项目已经升级到 Java 17,因为 Spring Boot 3 不再支持 Java 8 和 Java 11。接下来&…

Seata的部署与微服务集成

文章目录 Seata的部署与微服务集成1. Seata介绍2. 部署TC服务2.1 数据准备2.2 配置文件2.3 docker 部署2.4 访问 3. 微服务集成Seata3.1 引入服务3.2 改造配置3.3 添加数据库表3.4 注解标记 Seata的部署与微服务集成 1. Seata介绍 Seata 是一款开源的分布式事务解决方案&…

NFS 组件容器化部署实战指南

文章目录 前言部署NFS服务器K8S部署NFS问题记录 前言 使用nfs-client-provisioner这个应用,利用nfs server给kubernets提供作为持久化后端,并且动态提供pv。所有节点需要安装nfs-utils组件,并且nfs服务器与kubernets worker节点都能网络连通…

【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050

1. MPU6050简介 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer&#xff…

裸机器搭建k8s部署 1.28.10版本

问了搭建k8s集群踩了很多坑,问题主要出现在网络插件处,因此主要是master节点操作问题。重新走一下流程整理一下笔记。 目录 虚拟机准备 虚拟机 系统版本信息 修改镜像地址 配置静态ip 关闭防火前和交换分区 转发 IPv4 并让 iptables 看到桥接流量…

HCIE-day10-ISIS

ISIS ISIS(Intermediate System-to-Intermediate System)中间系统到中间系统,属于IGP(内部网关协议);是一种链路状态协议,使用最短路径优先SPF算法进行路由计算,与ospf协议有很多相…

70.爬楼梯 python

爬楼梯 题目题目描述示例 1:示例 2:提示: 题解思路分析Python 实现代码空间优化代码解释提交结果 题目 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff…

优质内容在个人IP运营中的重要性:以开源AI智能名片商城小程序为应用实例的深度探讨

摘要:在数字化时代,个人品牌(IP)的塑造与传播已成为各行各业提升影响力、吸引用户关注、促进商业转化的关键策略。优质内容作为连接个人IP与目标受众的桥梁,其在个人IP运营中的重要性不言而喻。本文旨在深入探讨优质内…

有限元分析学习——Anasys Workbanch第一阶段笔记(8)水杯案例的对称与轴对称处理

目录 1 序言 2 对称处理 2.1 模型处理 2.2 网格划分、约束载荷及接触设置 2.3 计算结果 3 轴对称处理 3.1 对称与轴对称概念 3.2 轴对称问题的应用 3.2.1 创建分析案例 3.2.2 导入并处理模型 3.2.3 网格划分、约束载荷及接触设置 3.2.4 后处理计算结果 1 序言 本章…

网络安全-web渗透环境搭建-BWAPP(基础篇)

01--所需系统环境: 虚拟主机系统部署(vmware,虚拟主机创建、虚拟主机网络配置(桥接,便于网络中多个主机都能访问虚拟主机)、虚拟软件功能,快照、克隆、镜像文件加载,ova文件制作&am…