网站首页 > 文章精选 正文
Springboot已经更新到3.3.0版本了,同时也在前几天宣布,3.1.x 版本也停止维护了,可以看到每个版本的生命周期在一年左右。
Springboot3.3.x支持哪些新特性?
1.最低需要JDK17
Spring Boot 3.0.0 开始支持并最低要求 Java 17,Spring Boot 3.1.5 开始支持 Java 21 了。JDK钉子户1.8在Springboot 2.7.12版本迎来终结,后续版本已经不再支持JDK1.8。
2.CDS功能
什么是CDS呢?
CDS全场叫作Class Data Sharing,即类数据共享的意思。主要作用是在不同的JVM之间共享类文件,从而减少JVM在启动时进行类加载阶段的时间,相应的也能减少内存占用。工作原理是CDS生成一个共享类归档文件(Shared Class Archive),文件后缀名为.jsa,这个文件包含预处理的类元数据,它会在 JVM 启动时加载到内存,以便 JVM 可以快速访问这些类元数据,而不需要在启动时重新加载和解析这些类信息,从而大大减少了启动时间。
如何使用CDS?
在启动应用时,通过命令行参数启用CDS功能。具体命令如下:
java -XX:SharedArchiveFile=app-cds.jsa -jar target/myapp-1.0.0.jar
在启动日志中可以看到以下信息,表示启用CDS成功。
[0.004s][info][class,load] Preload of class 'com/example/HelloWorld' from shared archive
3.Websockets 虚拟线程
什么是虚拟线程?
虚拟线程是一种轻量级的线程实现方式,也就是协程,旨在简化并发编程并提供更好的可扩展性。虚拟线程的创建和销毁速度更快,开销更小,因此可以大量创建,特别适合轻量级任务场景。通过协作式线程调度(Cooperative Thread Scheduling),虚拟线程可以实现多个线程并发执行,提高CPU的利用率。虚拟线程能够共享线程池中的线程,避免了重复创建和销毁线程的开销,提高了资源的复用率。虚拟线程允许多个虚拟线程在同一个OS线程上运行其Java代码,从而有效地共享该线程。Java 19 初次引入虚拟线程,在 Java 21 中正式转正生产可用。
如何使用虚拟线程?
Spring Boot 3.2.0 正式可以支持 Java 21 中的虚拟线程了,只需要添加以下配置即可使用虚拟线程相关的API编写虚拟线程代码。
spring.threads.virtual.enabled = true
其他的新特性还有:
1.配置文件支持 Base64
2.支持 SBOMs
3.添加了对 Micrometer 的 @SpanTag 注解的支持
4.增强Spring Security ,添加了对
JwtAuthenticationConverter 的自动配置
5.添加了对Apache ActiveMQ Artemis 和 LDAP 的服务连接支持
6.添加了对 Docker Compose 对 Bitnami 容器镜像的支持。
总得来说3.3.0版本还是更新了非常多的新特性,特别是本文详细介绍的CDS和虚拟线程2个新功能,对Springboot项目的增强是非常大的。
猜你喜欢
- 2025-06-13 SpringBoot权限炸场!动态鉴权提速10倍吊打RBAC(附工具源码)
- 2025-06-13 Spring Boot 3.4 新特性实战解析(springboot最新)
- 2025-06-13 SpringBoot 2.7.10、3.0.5 发布,修复 DoS漏洞
- 2025-06-13 springboot(二十八)stomp在spring5.3以上报跨域问题的处理
- 2025-06-13 还在为 Spring Boot3 动态配置发愁?一文教你轻松搞定!
- 2025-06-13 SpringBoot几种动态修改配置的方法
- 2025-06-13 快来看看SpringBoot2.2发行版,你能用到哪些新特性?
- 2025-06-13 Spring Boot3 应用打包成 Docker 镜像全攻略
- 2025-06-13 Spring Boot3 动态配置实现方案全解析,你掌握了吗?
- 2025-06-13 Spring Framework 6.2 和 Spring Boot 3.4 为 2025 年新一代做好准备
- 最近发表
-
- 面试中常被问到的Hash表,你了解吗
- JAVA面试考点:一文搞懂一致性Hash的原理和实现
- 一次性搞清楚equals和hashCode(hashcode() 与equals()区别,简单说明)
- HashMap.Key的故事:Key为什么出现Hash碰撞及冲突呢?
- hash冲突的几种解决方案对比(hash冲突的解决方式)
- 游戏王LN 无头骑士(无头骑士cv)
- Linux ln、unlink命令用法(linux link命令详解)
- n和l分不清矫正发音方法,这三步就够了
- golang引用私有gitlab项目代码(golang引入当前包下的文件)
- Instamic:录音领域中的 GoPro,让你想录就录,随心所欲
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)