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

欢迎观看《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 产品组合中的其他项目,这些项目 在解决特定问题时,您可能需要考虑。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有限元分析学习——Anasys Workbanch第一阶段笔记(10)桌子载荷案例分析_实际载荷与均布载荷的对比

目录 0 序言 1 桌子案例 2 模型简化 3 方案A 前处理 1)分析类型选择 2)材料加载 3)约束、载荷及接触 4)控制网格(网格大小需要根据结果不断调整) 初始计算结果 加密后计算结果 4 方案B、C 前处理 1)分析…

Git 基础——《Pro Git》

⭐获取 Git 仓库 获取 Git 仓库有两种方式: 将未进行版本控制的本地目录转换为 Git 仓库。从其他服务器克隆一个已存在的 Git 仓库。 在已存在目录中初始化 Git 仓库 进入目标目录 在 Linux 上:$ cd /home/user/my_project在 macOS 上:$ c…

Java 将RTF文档转换为Word、PDF、HTML、图片

RTF文档因其跨平台兼容性而广泛使用,但有时在不同的应用场景可能需要特定的文档格式。例如,Word文档适合编辑和协作,PDF文档适合打印和分发,HTML文档适合在线展示,图片格式则适合社交媒体分享。因此我们可能会需要将RT…

R语言在森林生态研究中的魔法:结构、功能与稳定性分析——发现数据背后的生态故事!

森林生态系统结构、功能与稳定性分析与可视化研究具有多方面的重要意义,具体如下: 一、理论意义 ●深化生态学理论 通过研究森林生态系统的结构、功能与稳定性,可以深化对生态系统基本理论的理解。例如,生物多样性与生态系统稳定性…

Delphi+SQL Server实现的(GUI)户籍管理系统

1.项目简介 本项目是一个户籍管理系统,用于记录住户身份信息,提供新户登记(增加)、户籍变更(修改)、户籍注销(删除)、户籍查询、曾用名查询、迁户记录查询以及创建备份、删除备份共8…

第2课 “Hello World” 与 print

1 Hello World 2 print 函数解析 2.1 基本用法 2.2 输出多个对象 2.3 使用sep参数 2.4 使用flush参数 2.5 输出到文件 3 格式化输出 3.1 格式化输出整数 3.2 格式化输出16进制整数 3.3 格式化输出浮点数(float) 3.4 格式化输出字符串(string) 3.5 输出列表与字典 …

计算机网络(四)网络层

4.1、网络层概述 简介 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来,形成一个更大的互…

qt 窗口(window/widget)绘制/渲染顺序 QPainter QPaintDevice Qpainter渲染 失效 无效 原因

qt窗体布局 窗体渲染过程 qt中窗体渲染逻辑顺序为 本窗体->子窗体/控件 递归,也就是说先渲染父窗体再渲染子窗体。其中子窗体按加入时的先后顺序进行渲染。通过下方的函数调用堆栈可以看出窗体都是在widget组件源码的widgetprivate::drawwidget中进行渲染的&am…

网络安全-kail linux 网络配置(基础篇)

一、网络配置 1.查看网络IP地址, 我的kail:192.168.15.128 使用ifconfig查看kail网络连接情况,ip地址情况 又复制了一台kail计算机的IP地址。 再看一下windows本机:使用ipconfig进行查看: 再看一下虚拟机上的win7I…

Edge浏览器内置的截长图功能

Edge浏览器内置截图功能 近年来,Edge浏览器不断更新和完善,也提供了长截图功能。在Edge中,只需点击右上角的“...”,然后选择“网页捕获”->“捕获整页”,即可实现长截图。这一功能的简单易用,使其成为…

【NLP】语言模型的发展历程 (1)

语言模型的发展历程系列博客主要包含以下文章: 【NLP】语言模型的发展历程 (1)【NLP】大语言模型的发展历程 (2) 本篇博客是该系列的第一篇,主要讲讲 语言模型(LM,Language Model) 的发展历程。 文章目录 一、统计语…

【ASP.NET学习】ASP.NET MVC基本编程

文章目录 ASP.NET MVCMVC 编程模式ASP.NET MVC - Internet 应用程序创建MVC web应用程序应用程序信息应用程序文件配置文件 用新建的ASP.NET MVC程序做一个简单计算器1. **修改视图文件**2. **修改控制器文件** 用新建的ASP.NET MVC程序做一个复杂计算器1.创建模型(…

蓝桥云客第 5 场 算法季度赛

题目: 2.开赛主题曲【算法赛】 - 蓝桥云课 问题描述 蓝桥杯组委会创作了一首气势磅礴的开赛主题曲,其歌词可用一个仅包含小写字母的字符串 S 表示。S 中的每个字符对应一个音高,音高由字母表顺序决定:a1,b2,...,z26。字母越靠后…

计算机网络 (37)TCP的流量控制

前言 计算机网络中的TCP(传输控制协议)流量控制是一种重要机制,用于确保数据在发送方和接收方之间的传输既高效又稳定。 一、目的 TCP流量控制的主要目的是防止发送方发送数据过快,导致接收方无法及时处理,从而引起数据…

【Elasticsearch7.11】postman批量导入少量数据

JSON 文件内的数据格式,json文件数据条数不要过多,会请求参数过大,最好控制再10000以内。 {"index":{"_id":"baec07466732902d22a24ba01ff09751"}} {"uuid":"baec07466732902d22a24ba01ff0975…

Spring Boot 支持哪些日志框架

Spring Boot 支持多种日志框架,主要包括以下几种: SLF4J (Simple Logging Facade for Java) Logback(默认)Log4j 2Java Util Logging (JUL) 其中,Spring Boot 默认使用 SLF4J 和 Logback 作为日志框架。如果你需要使…

AIDD - 人工智能药物设计 -深度学习赋能脂质纳米颗粒设计,实现高效肺部基因递送

Nat. Biotechnol. | 深度学习赋能脂质纳米颗粒设计,实现高效肺部基因递送 今天为大家介绍的是来自美国麻省理工和爱荷华大学卡弗医学院团队的一篇论文。可离子化脂质(ionizable lipids)是脂质纳米颗粒(lipid nanoparticles&#…

【SVN】版本发布快捷操作

摘要:因为每次发版都需要制作一份相同的文件夹,而大部分的包都不需要变更,但是文件又非常大,记录自己的操作经验。 首先在SVN Repository Browser 界面把上一次的版本复制一份,复制的时候重命名为新的版本号 右击要复…

AR 眼镜之-拍照/录像动效切换-实现方案

目录 📂 前言 AR 眼镜系统版本 拍照/录像动效切换 1. 🔱 技术方案 1.1 技术方案概述 1.2 实现方案 1)第一阶段动效 2)第二阶段动效 2. 💠 默认代码配置 2.1 XML 初始布局 2.2 监听滑动对 View 改变 3. ⚛️…

HTML5实现好看的端午节网页源码

HTML5实现好看的端午节网页源码 前言一、设计来源1.1 网站首页界面1.2 登录注册界面1.3 端午节由来界面1.4 端午节习俗界面1.5 端午节文化界面1.6 端午节美食界面1.7 端午节故事界面1.8 端午节民谣界面1.9 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 H…