编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

SpringBoot3.3.0正式发布,CDS新特性让应用启动飞一般丝滑

wxchong 2025-04-24 09:30:04 开源技术 11 ℃ 0 评论

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项目的增强是非常大的。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表