Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

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:007583

评论

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

有范同城到家小程序系统:赋能本地生活服务高效运营

微擎应用市场

基于仓颉编程语言+DeepSeek实现智能聊天助手开发秘籍

华为云开发者联盟

MaaS CodeArts 华为开发者空间 cangjie

建筑矿山设备工厂南京厂区:MyEMS 赋能绿色智能制造转型实践

开源能源管理系统

开源 能源管理系统

「高频必考」Docker&K8S面试题和答案

王中阳Go

Docker k8s

具身智能评估新思路:智源评测FlagEval基于2025世界人形机器人运动会足球赛的初步探索

智源研究院

人工智能 具身智能

9 月 13 日,TiDB 社区活动在西安!助力民生领域数据架构升级和业务效能提升,一起探讨 TiDB 在智慧城市、智能制造(半导体)、疾控、生活服务等行业的实践分享!

TiDB 社区干货传送门

“敏捷产品管理精进课程” 12月6-7日 · A-CSPO认证 · 上海线下【提前报名特惠】

ShineScrum

CSPO认证 敏捷认证

硅谷顶级 VC 如何看语音 AI?Greylock 合伙人揭秘 Voice Agent 构建的三层策略

声网

聊聊Deepseek V3.1的极你太美

冯骐

AI 模型训练 大模型 DeepSeek DeepSeekV3.1

来自火山引擎的 MCP 安全授权新范式

火山引擎开发者社区

火山引擎 MCP

RAG技术工作流程详解

测试人

别再猜了!用数据揭穿平凯数据库(TiDB 企业版)敏捷模式和MySQL的性能对比真相!

TiDB 社区干货传送门

版本测评 性能测评 敏捷模式 TEM 试用

汽车之家携手 TiDB:业务增长20+倍,一套 HTAP 数据库的规模化实践

TiDB 社区干货传送门

盘点几款企业远控软件:IT远程运维方案如何选择

科技热闻

从新闻数据到社会脉动:智能分析的实践与挑战

沃观Wovision

数据分析 新闻 沃观Wovision 舆情监测系统

区块链Web3项目的需求分析

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

区块链开发 软件外包公司 web3开发

企业借助 MyEMS 开源能源管理系统实现节能减排的实践路径

开源能源管理系统

开源 能源管理系统

开源赋能能源管理:MyEMS 如何改写行业规则

开源能源管理系统

开源 能源管理系统

2025年值得关注的五个海外内容平台趋势

Wolink

海外营销推广 沃链Wolink 达人营销

AI 网关代理 RAG 检索:Dify 轻松对接外部知识库的新实践

阿里巴巴云原生

阿里云 云原生 AI网关

Java包装类:你需要掌握的核心要点

码语者

Java 包装类型

闲鱼商品详情API数据解析(附代码)

tbapi

闲鱼API 闲鱼商品数据采集 闲鱼商品详情API 闲鱼商品采集

七年,从 TB 到 PB:TiDB 助力马上消费金融核心系统演进

TiDB 社区干货传送门

TEM on 腾讯云 开箱即用的完美体验

TiDB 社区干货传送门

TEM 试用

Claude Code 官方内部团队最佳实践!

Immerse

写作格式一键复刻!Fabarta个人专属智能体自定义模板新功能介绍

Fabarta

人工智能 个人专属智能体

我如何用Prompt工程将大模型调教成风控专家

京东零售技术

平凯数据库(TiDB 企业版)敏捷模式内测开启!报名即可获得 6 个月的企业版使用权限 & 领取考试课程券和积分奖励,Top 10 测试报告撰写者还可以获得 TiDB 社区定制款行李箱!

TiDB 社区干货传送门

TiDB 在智能制造与能源领域:以先进架构解决痛点,支撑多场景创新与发展

TiDB 社区干货传送门

轻量级知识图谱框架LightRAG入门指南

测试人

哇塞!AI编程神器Kiro,免排队畅用真Claude模型!

王磊

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