Spring Boot 3.2 提供对虚拟线程以及现代 RestClient 和 JdbcClient 的支持

Spring Boot 团队于 2023 年 11 月发布了 Spring Boot 3.2。这个最新版本包含了很多功能,其中最值得注意的是对虚拟线程和检查点协调恢复 (CRaC) 的支持。其他功能包括 SSL 捆绑包重新加载、对 RestClientJdbcClient 接口的支持以及可观察性改进。

在 JDK 21 中,一个特别重要的功能是 Project Loom 的虚拟线程,JEP 将其描述为轻量级线程,可以大大减少编写、维护和观察高吞吐量并发应用程序的工作量。

Spring Boot 3.2 集成了对虚拟线程功能的支持。如果要使用它,需将属性 spring.threads.virtual.enabled 设置为 true 并使用 JDK 21。在背后,Tomcat 和 Jetty 将使用虚拟线程,这意味着处理 Web 请求的应用程序代码现在将在虚拟线程上进行操作。

此外,当通过该属性启用虚拟线程时, SimpleAsyncTaskExecutor 类被配置为使用虚拟线程,这直接影响使用 @EnableAsync 注释的方法、异步 Spring 的 MVC 请求以及Spring WebFlux 阻塞执行调用,因为它们现在都将创建虚拟线程而不是平台线程。

受此功能影响的其他领域包括 RabbitMQ 和 Kafka Listeners、Spring Data Redis 和 Spring for Apache Pulsar。

RestClient 是 RestTemplate 的现代替代品,是 Spring Framework 6.1 中引入的同步 HTTP 客户端。 Spring Boot 现在将创建并预配置 bean RestClient.Builder 以创建 RestClient 实例。它提供了一个函数式 API,就像 Spring WebFlux 中的对应 WebClient 一样。使用 RestClient 的一个主要优点是无需添加对 Spring WebFlux 的额外依赖来调用远程 REST API。

Spring 团队建议使用 RestClient 来调用远程 REST 服务,除非正在使用 Spring WebFlux 或 Project Reactor,在这种情况下建议选择 WebClient。

与 RestClient 类似,Spring Framework 6.1 中引入了一个新接口 JdbcClient,并在 Spring Boot 3.2 中自动配置。它提供了流畅的 API 来执行常见的数据库操作。

SSL Bundles 首次在 Spring Boot 3.1 中引入,用于配置和使用 SSL 信息,例如密钥库、证书、私钥等。在 Spring Boot 3.2 中,可以通过设置属性 reload-on-update=true 。 Netty 和 Tomcat Web 服务器支持热重载。相关属性 spring.ssl.bundle.watch.file.quiet-period=10s 可用于配置安静期,之后会检测到更改。

Spring Boot 3.2 进行了多项可观察性改进。 Micrometer 的注释,例如 @Timed@Counted@NewSpan@ContinueSpan@Observed ,可以以声明方式使用当 spring-boot-starter-aop 位于类路径上时。用 @Scheduled 注释的方法是为了可观察性而设计的。通过将属性 management.observations.enable 设置为 false ,可以禁用以指定名称开头的观察。属性 management.metrics.tags 在 Spring Boot 3.2 中已弃用,并替换为 management.observations.key-values 。添加可应用于具有此属性的所有观察的通用键值。阅读此版本中可观察性改进的完整列表。

对于 Spring 和 Java 开发人员来说,现在是最好的时机。 Spring Boot 3.2 通过 Project CRaC 支持(在 OpenJDK 的某些发行版中提供)和 Project Loom(从 Java 21 开始提供)提供了巨大的运行时效率。这些功能与支持 GraalVM 本机映像的现有工作相结合,为寻求发展的 Spring Boot 开发人员提供了绝佳的机会最好的生产体验。

原文地址

相关推荐
你的人类朋友33 分钟前
认识一下Bcrypt哈希算法
后端·安全·程序员
tangweiguo030519871 小时前
基于 Django 与 Bootstrap 构建的现代化设备管理平台
后端·django·bootstrap
IT果果日记1 小时前
详解DataX开发达梦数据库插件
大数据·数据库·后端
dazhong20121 小时前
Spring Boot 项目新增 Module 完整指南
java·spring boot·后端
bobz9651 小时前
Cilium + Kubevirt 与 Kube-OVN + Kubevirt 在公有云场景下的对比与选择
后端
David爱编程2 小时前
深度解析:synchronized 性能演进史,从 JDK1.6 到 JDK17
java·后端
脑子慢且灵3 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee
用户298698530143 小时前
如何在 C# 中用表格替换 Word 文档中的文本?
后端
山东小木3 小时前
JBoltAI需求分析大师:基于SpringBoot的大模型智能需求文档生成解决方案
人工智能·spring boot·后端·需求分析·jboltai·javaai·aigs
Moonbit3 小时前
MoonBit 再次走进清华:张宏波受邀参加「思源计划」与「程序设计训练课」
前端·后端·编程语言