AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

作者:Sirisha Pratha

  • 2024-01-09
    北京
  • 本文字数:1517 字

    阅读完需:约 5 分钟

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

Spring Boot 团队在 2023 年 11 月发布了 Spring Boot 3.2。这个最新版本包含了许多特性,其中最值得关注的是对虚拟线程和检查点协调恢复(Coordinated Restore at Checkpoint,CRaC)的支持。其他的特性包括 SSL Bundle 重加载、支持 RestClient 和 JdbcClient 接口,以及可观测性的增强。


在 JDK 21 中,一个非常重要的特性就是 Loom 项目的虚拟线程,JEP 将其描述为轻量级线程,可以显著减少编写、维护和观测高吞吐并发应用程序的工作量。


Spring Boot 3.2 集成了对虚拟线程的支持。要使用它的话,需要将 spring.threads.virtual.enabled 属性设置为 true ,并使用 JDK 21。在底层,Tomcat 和 Jetty 将会使用虚拟线程,这意味着处理 web 请求的应用程序代码现在将会在虚拟线程上运行。


除此之外,当通过该属性启用虚拟线程后,SimpleAsyncTaskExecutor 类也会被配置为使用虚拟线程,这会直接影响带有 @EnableAsync 注解的方法、异步 Spring MVC 以及 Spring WebFlux 阻塞调用的行为,在这种情况下,它们都将创建虚拟线程,而不是平台线程。


受此特性影响的其他领域包括 RabbitMQ 和 Kafka 的监听器、Spring Data Redis 和 Spring for Apache Pulsar。


RestClient 是 RestTemplate 的一个现代化替代方案,是 Spring Framework 6.1 引入的同步 HTTP 客户端。Spring Boot 现在通过创建和预配置 RestClient.Builder 的方式创建 RestClient 实例。它提供了一个函数式的 API,就像 Spring WebFlux 中对应的 WebClient API 类似。使用 RestClient 的一个主要优势在于为了调用远程 REST API,不再需要添加额外的 Spring WebFlux 依赖。


Spring 团队建议使用 RestClient 来调用远程 REST 服务,除非已经使用了 Spring WebFlux 或 Reactor 项目,在这种情况下,推荐的选择是 WebClient。


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


Spring Boot 3.1 首次引入了 SSL Bundle,用于配置和使用 SSL 信息,比如 keystore、证书和私钥等。在 Spring Boot 3.2 中,通过设置 reload-on-update=true 属性,我们可以在 SSL 信任物料发生变化的时候重新加载 SSL bundle。Netty 和 Tomcat web 服务器支持热重新加载。我们可以使用相关的 spring.ssl.bundle.watch.file.quiet-period=10s 属性来配置静默期,在静默期之后将会探测变更。


Spring Boot 3.2 对可观测性进行了一些增强。当 spring-boot-starter-aop 位于类路径中时,Micrometer 的注解,比如 @Timed、@Counted、@NewSpan、@ContinueSpan 和 @Observed,均可声明式地使用。使用 @Scheduled 注解标注的方法进行了插装,以支持可观测性。通过将 management.observations.enable 属性设置为 false,可用禁用以指定名称开头的观测。在 Spring Boot 3.2 中,management.metrics.tags 属性已被废弃,取代它的是 management.observations.key-values。添加通用的键 - 值可以应用到所有具备该属性的观测中。请阅读该版本中可观测性改进的完整列表。


Broadcom 的 Spring 开发人员倡导者 Josh Long 告诉 InfoQ:


现在是成为 Spring 和 Java 开发人员的最佳时机。通过支持 CRaC 项目(在某些 OpenJDK 发行版中已可用) 和 Loom 项目(从 Java 21 可用),Spring Boot 3.2 提供了优异的运行时效率。这些特性与现有的支持 GraalVM 原生镜像的工作相结合,为 Spring Boot 开发人员在生产环境中寻找最佳体验提供了绝佳的机会。


关于升级和值得关注的完整变更列表,请参阅官方发布说明。


原文链接:

https://www.infoq.com/news/2023/12/spring-boot-virtual-threads/?accessToken


声明:本文由 InfoQ 翻译,未经许可禁止转载。

2024-01-09 08:007480

评论

发布
暂无评论
发现更多内容

macOS Tahoe 26 让 Mac 更强大、更高效、更智能

柠檬与橘子

怎样做YashanDB支持高性能事务处理

数据库砖家

构建基于YashanDB数据库的分布式事务管理系统技术分析

数据库砖家

怎样做轻松迁移至YashanDB数据库避免数据丢失

数据库砖家

微信小游戏开发的技术框架

北京木奇移动技术有限公司

软件外包公司 游戏外包公司 游戏开发公司

快手12篇论文入选CVPR 2025!

快手技术

人工智能 大模型 快手 学术成果

多格式文件在线预览,提升移动设备文件处理效率与体验

HarmonyOS SDK

harmoyos

2025Java面试八股①(含121道面试题和答案)

王中阳Go

Java 面试

OCR 识别质量如何影响 RAG 系统的性能?有何解决办法?

Baihai IDP

AI OCR LLM Baihai IDP 检索增强生成

如何通过YashanDB丰富企业的客户数据

数据库砖家

YashanDB数据库自动化测试方案

数据库砖家

使用YashanDB数据库进行日志数据管理

数据库砖家

Unity开发游戏的技术框架

北京木奇移动技术有限公司

游戏开发 软件外包公司 游戏外包

深入研究:亚马逊amazon商品列表API接口Python攻略

tbapi

亚马逊API 亚马逊商品列表接口 亚马逊商品详情接口 亚马逊数据采集

如何通过YashanDB实施弹性计算环境的数据管理

数据库砖家

YashanDB数据库安装与配置的详细步骤

数据库砖家

如何应对YashanDB数据库中的数据一致性挑战

数据库砖家

使用YashanDB进行实时数据分析的完整流程

数据库砖家

视觉与图像识别自动化测试 | 图像识别

测试人

人工智能

如何优化YashanDB数据库以提升数据处理速度?

数据库砖家

如何在YashanDB中管理用户权限与角色

数据库砖家

深入了解YashanDB数据库的功能与模块

数据库砖家

2025 年 MQTT 技术趋势:驱动 AI 与物联网未来发展的关键动力

EMQ映云科技

mqtt emqx MCP

如何实现YashanDB数据库的负载均衡

数据库砖家

使用YashanDB时如何进行有效的查询优化

数据库砖家

Ae/Pr/视觉特效和转场BCC插件 Boris FX Continuum 2023亮点功能

Rose

真实场景文档理解:字节发布的WildDoc基准数据集向OCR提出了什么挑战?

合合技术团队

算法 人工智能’ #大数据

微信小游戏的运营

北京木奇移动技术有限公司

游戏开发 游戏运营 游戏外包公司

微信小程序上线后的运维

北京木奇移动技术有限公司

微信小游戏 软件外包公司 游戏外包公司

怎样做YashanDB数据一致性校验,确保业务准确?

数据库砖家

怎样做数据库负载高峰应对?YashanDB动态调节机制

数据库砖家

Spring Boot 3.2 提供对虚拟线程以及 RestClient 和 JdbcClient 的支持_编程语言_InfoQ精选文章