Spring Boot 3.3 正式发布,王炸级更新,应用启动速度直接起飞!

最新消息,Spring Boot 一次性发布了 3 个版本:

  • 3.3.0

  • 3.2.6

  • 3.1.13

Spring Boot 3.3 正式发布了,3.1.x 在前几天也停止维护了。

最新的支持版本如下:

图片

从路线图可以看到每个版本的终止时间,每个版本的生命周期只有一年。

Spring Boot 进入了全新的 3.x 时代了,3.1.x 和 3.0.x 也相继停止维护了,商业支持的版本也只有 2.7+ 了,2.6.x 以下的版本彻底退出历史舞台。。

Spring Boot 3.3.0 新特性

1、最低环境要求

Spring Boot 3.0.0 开始支持并最低要求 Java 17,Spring Boot 3.1.5 开始支持 Java 21 了。

对 Java 开发环境的要求对比表:

Spring BootJDKSpringMavenGradle
3.3.017 ~ 226.1.8+3.6.3+7.5+,8.x
3.2.017 ~ 216.1.1+3.6.3+7.5+,8.x
3.1.017 ~ 206.0.9+3.6.3+7.5+,8.x
3.0.017 ~ 196.0.2+3.5+7.5+
2.7.128 ~ 205.3.27+3.5+6.8.x, 6.9.x, 7.x, 8.x

支持 Java 8 的最后一个 Spring Boot 2.x 系列版本已经退伍啦,Java 17 的新时代到来。

如果你还停留在 Java 8 就 OUT 了,过去一两年,Java 8 采用率腰斩,Java 17 暴涨 430%!!

2、CDS 支持(可缩短启动时间)

什么是 CDS?

CDS 全称为:Class Data Sharing,即类数据共享,它是 JVM 的一项功能,它可以在多个 JVM 之间共享类,从而帮助减少 Java 应用程序的启动时间和内存占用。

CDS 可以生成一个称为共享类归档(Shared Class Archive)的文件,即 *.jsa 文件,该文件包含预处理的类元数据,它会在 JVM 启动时加载到内存,以便 JVM 可以快速访问这些类元数据,而不需要在启动时重新加载和解析这些类信息,从而大大减少了启动时间。

使用方式如下:

$ java -Djarmode=tools -jar test-app.jar extract --destination application
$ cd application
$ java -XX:ArchiveClassesAtExit=application.jsa -Dspring.context.exit=onRefresh -jar test-app.jar

这里它便会创建一个 application.jsa 文件,只要应用程序未更新,就可以重复使用该文件。如果要使用缓存,需要在启动应用程序时添加一个额外的参数:

$ java -XX:SharedArchiveFile=application.jsa -jar test-app.jar

有了这个特性支持,Spring Boot 应用程序的启动速度会大大提升,要直接起飞了。

3、Websockets 支持虚拟线程

Spring Boot 3.3.0 添加了 Websockets 对虚拟线程支持。

什么是虚拟线程?

虚拟线程是一种成本低廉、轻量级的用户模式的线程实现,也就是传说中的 “协程”,它可以充分利用可用硬件,大幅减少编写、维护和监测高并发应用的工作量。

我们都知道使用线程是要十分注意的,因为线程的创建、销毁都十分消耗系统资源,所以有了线程池,但这还不够,因为线程的数量是有限的,线程会阻塞操作系统线程,无法尽可能的提高吞吐量。

因为使用线程的成本很高,所以才会有了虚拟线程,它是用户态线程,成本是相当低廉的,调度也完全由用户进行控制(JDK 中的调度器),它同样可以进行阻塞,但不用阻塞操作系统线程,充分提高了硬件利用率,高并发也上了一个量级,从而实现了高吞吐量。

Java 19 初次引入虚拟线程,在 Java 21 中正式转正生产可用。

Spring Boot 3.1.5 做了对 Java 21 的兼容,Spring Boot 3.2.0 正式可以支持 Java 21 中的虚拟线程了,只需要添加以下配置即可:

spring.threads.virtual.enabled = true

4、配置文件支持 Base64

配置文件增强了,现在可以在 property 和 YAML 配置文件文件中将资源加载为 Base64 格式的值了,即使用 base64: 前缀将资源加载为 Base64 编码的文本值,这对于 SSL 证书等资源非常有用。

如下面配置示例:

spring:ssl:bundle:pem:mybundle:keystore:certificate: "base64:Ts9tL8UYRUdJTi..."private-key: "base64:Yk1dIEF0dHJpYn..."

5、支持 SBOMs

支持 SBOMs,并添加了一个 SBOM 端点。

SBOM 全称为:Software Bill of Materials,即软件材料清单,它用于提供软件组件的清单和详细信息,包括其涉及到的开源和第三方依赖、库、工具等。

SBOM 的主要目的是提高软件的透明度,帮助开发人员、安全团队理解软件中包含的具体内容,从而更好地管理安全风险、许可证合规性和依赖项的更新。

6、其他

1)可观察性增强了,主要添加了对 Micrometer 的 @SpanTag 注解的支持,新增了一个 InfoContributor 以及对 Prometheus 1.x 支持。

2)Spring Security 增强了,主要添加了对 JwtAuthenticationConverter 的自动配置。

3)服务连接支持增强了,主要添加了对Apache ActiveMQ Artemis 和 LDAP 的服务连接支持。

4)容器镜像增强了,主要添加了对 Docker Compose 对 Bitnami 容器镜像的支持。

5)大量 Spring 库和第三方类库都得到了更新,还有一些废除项。

总结

Spring Boot 3.3 这个版本的变化还挺大的,很多功能都得到了增强,做技术的真要时刻保持对新技术的渴望啊,不然都跟不上时代的步伐了。

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

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

相关文章

安徽大学数学科学学院教授陈昌昊

男,本(2005-2009)、硕(2009-2012)学位都在湖北大学获得,博士学位在芬兰获得(2012-2016),博士后分别在澳大利亚(2016-2019)、香港(2020…

vue3中el-form表单校验,再点击提交按钮的时候通过校验才进行提交

vue3中el-form表单校验&#xff0c;再点击提交按钮的时候通过校验才进行提交 一、前言1、案例 一、前言 在 Vue 3 中&#xff0c;可以使用 Element UI 的 <el-form> 组件配合 <el-form-item> 来实现表单的必填项校验&#xff0c;并在提交时根据校验结果来决定是否…

clickhouse 中的数组(array)和元组(Tuple)—— clickhouse 基础篇(二)

文章目录 数组判断是否为空计算数组长度获取数组元素判断某个元素是否存在数组切片数组元素展开数组元素去重删除连续重复元素连接多个数组数组倒序数组拍平数组元素映射数组元素过滤数组聚合分析计算数组交集计算数组并集计算数组差集SQL 子查询进行集合操作 元组创建元组获取…

LeetCode刷题之HOT100之二叉树的直径

2024/5/25 阴天。这几天睡眠质量都非常好&#xff0c;一切似乎都在慢慢上升。先把题做了 1、题目描述 2、逻辑分析 题目要求就是给一个二叉树&#xff0c;求出两个节点之间的最大长度即为二叉树的直径。怎么做呢&#xff1f;我想不出来。看一下题解吧。题解给出的解法是深度优…

Swagger2 和 Swagger3 的不同

Swagger2 和 Swagger3 的不同 SpringBoot 整合 Swagger3 和 Swagger2 的主要区别如下&#xff1a; 区别一&#xff1a;引入不同的依赖 如果使用的是 Swagger 3 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…

Linux——Docker容器虚拟化平台

安装docker 安装 Docker | Docker 从入门到实践https://vuepress.mirror.docker-practice.com/install/ 不需要设置防火墙 docker命令说明 docker images #查看所有本地主机的镜像 docker search 镜像名 #搜索镜像 docker pull 镜像名 [标签] #下载镜像&…

学习java第八十天

ApplicationContext有哪些常见实现&#xff1f; FileSystemXmlApplicationContext容器从XML文件加载bean的定义。XML bean配置文件的完整路径必须提供给构造函数。 ClassPathXmlApplicationContext容器也从XML文件加载bean的定义。这里&#xff0c;你需要正确设置classpath因…

mybatis-plus 优雅的写service接口中方法(3)

多表联查 上文讲过了自定义sql &#xff0c;和wrapper的使用&#xff0c;但是我们可以发现 我们查询的都是数据库中的一张表&#xff0c;那么怎么进行多表联查呢&#xff0c;当然也是用自定义sql来进行实现 比如说 查询 id 为 1 2 4 的用户 并且 地址在北京 的 用户名称 普…

Elasticsearch不删原有jdk8导致的系列安装和启动问题

以前在空机器直接装elasticsearch&#xff0c;没有遇到什么问题。今天在现有JDK上安装&#xff0c;遇到的问题记录一下&#xff1a; 1. JDK的环境变量配置与我原有的不一致报如下错误&#xff1a; [estestZK-DES-I root]$ /usr/elasticsearch/bin/elasticsearch could not fi…

python-数据分析与可视化基础

1、data1.csv中的B、C、D和E列数据分别是日期、权重、A企业的销售额、B企业的销售额。读取C、D、E列数据,并统计E列数据的算术平均数、加权平均值(权值为C列数据)、方差、中位数、最小值、最大值。并绘制E列数据的直方图。 &#xff08;1&#xff09;源代码&#xff1a; impo…

JavaScript异步编程:理解和使用Promise、Async/Await

JavaScript是一种单线程语言&#xff0c;这意味着它一次只能执行一个任务。然而&#xff0c;在Web开发中&#xff0c;我们经常需要处理异步操作&#xff0c;例如网络请求、定时器、事件监听等。JavaScript提供了多种方式来处理异步编程&#xff0c;包括回调函数、Promise、Asyn…

什么生信流程语言让你极度爽?

生信流程搭建有多难&#xff1f;行业为解决这一问题提出了各种各样的配方&#xff0c;有你熟悉的吗&#xff1f; 一、困境 - 乱 无数机构投入大量人力物力&#xff0c;以期获得一条条可用的生信流程。而有些流程&#xff0c;由于种种原因&#xff0c;存在着巨大的缺陷&#xf…

安全风险 - 切换后台时背景模糊处理

因为安全风险中提到当app处于后台卡片状态时&#xff0c;显示的卡片页面应该为模糊效果&#xff0c;否则容易泄露用户隐私&#xff0c;尤其当前页涉及个人信息、资产信息等&#xff0c;都会造成信息泄露&#xff01;基于这种场景&#xff0c;我研究了下这种业务下的模糊效果 找…

普通函数的参数中的auto

2.1 普通函数的参数中的auto 从c14起&#xff0c;lambda可以使用auto占位符声明或者定义参数: auto printColl [] (const auto& coll) // generic lambda{ for (const auto& elem : coll) {std::cout << elem << \n;}} 只要支持Lambda 内部的操作&…

【OS】AUTOSAR Os是如何启动第一个Task的

目录 前言 正文 1.总体概览及背景介绍 1.1. Os默认的Hook配置 1.2 用户Task的配置

Golang创建文件夹

方法 package zdpgo_fileimport ("os" )// AddDir 创建文件夹 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }测试 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

第八届“英拿科技杯”上海高校金马程序设计联赛暨东华大学邀请赛

第八届“英拿科技杯”上海高校金马程序设计联赛暨东华大学邀请赛 仪表盘所有提交榜单 I. 孤星 单点时限: 2.0 sec 内存限制: 512 MB &#x1d45b;(1≤103) 个干员&#xff0c;每个干员工资为 &#x1d464;&#x1d456;(1≤&#x1d464;&#x1d456;≤105)&#xff0c;贡献…

JAVA云HIS医院系统源码 HIS源码:云HIS系统与SaaS的关系

云HIS系统与SaaS的关系 云HIS系统是一种基于云计算技术的医院信息系统&#xff0c;它采用B/S架构&#xff0c;通过云端SaaS服务的方式提供。用户可以通过浏览器访问云HIS系统&#xff0c;无需关注系统的部署、维护、升级等问题。云HIS系统通常具有模板化、配置化、智能化等特点…

react记录部署

导语 React中的核心概念 1 虚拟DOM&#xff08;Virtual DOM&#xff09; 2 Diff算法&#xff08;虚拟DOM的加速器&#xff0c;提升React性能的法宝&#xff09; React主要的原理 Virtual DOM 虚拟DOM; 提供了一种不同的而又强大的方式来更新DOM&#xff0c; 代替直接的DOM操…

cuda11.8安装torch2.0.1

pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pytorch.org/whl/cu118