📌 一句话摘要
Spring 官方宣布弃用 `RestTemplate`,转而支持 `RestClient` 和 `WebClient`。文章详细介绍了 `RestClient` 的新功能以及 HTTP 客户端的未来发展规划。
📝 详细摘要
本文宣布正式弃用 Spring 中长期使用的 HTTP 客户端 `RestTemplate`,原因是其在现代 Java 特性和 API 设计方面存在局限性。文章重点介绍了 Spring HTTP 客户端的演变,并将 `RestClient`(用于传统的命令式堆栈)和 `WebClient`(用于响应式、非阻塞堆栈)作为未来的推荐方案。文章详细介绍了 Spring Framework 7.0 中 `RestClient` 的未来功能,包括 API 版本控制、改进的 `HttpMessageConverters` 配置、用于管理多个客户端的 `Http Interface Groups` 以及用于增强测试的 `RestTestClient`。此外,还讨论了用于改进模块化的 `RestClient` 和 `WebClient` 的 Spring Boot 启动器。文章提供了关于 `RestTemplate` 的明确弃用时间表以及迁移到 `RestClient` 的指南,强调了其现代的 Fluent API,以及对 Java 虚拟线程和结构化并发的支持。最后,文章将 `RestClient` 定位为大多数同步用例,而将 `WebClient` 定位为响应式和流式场景。
💡 主要观点
-
Spring 正式弃用 `RestTemplate`,因为它过时的模板风格 API 以及对现代功能的限制。
最初的 `RestTemplate` 在 API 可扩展性、异步调用和流式协议方面存在不足,因此被弃用,取而代之的是更现代、更流畅的 API 设计。
-
`RestClient` 成为传统命令式堆栈的主要 HTTP 客户端,获得了重要的新功能。
Spring Framework 7.0 为 `RestClient` 引入了 API 版本控制、简化的 `HttpMessageConverters`、`Http Interface Groups` 和 `RestTestClient`,使得 `RestClient` 成为更强大和现代的选择。
-
Spring 现在根据应用程序的需求,在 `RestClient` 和 `WebClient` 之间提供了一个明确的选择。
`RestClient` 推荐用于大多数同步、阻塞的 HTTP 调用,而 `WebClient` 仍然是响应式 API 和流式处理能力的首选。
💬 文章金句
- 借此机会,我们希望阐述一项重要声明:Spring 官方正式宣布弃用 `RestTemplate`。
- “模板式”API 在有限的范围内表现良好,但随着新功能的加入,其局限性也逐渐显现。
- 新的方案确定了 `RestClient` 和 `WebClient` 的定位:前者服务于传统堆栈,后者则用于响应式场景,并且两者都将由 Spring 团队积极维护。
- 选择过程将更加简单:在大多数情况下,`RestClient` 是首选;而对于响应式 API 或流式处理能力有要求的场景,`WebClient` 则是不二之选。
- 我们坚信,升级到 `RestClient`(及其底层基础设施)是面向未来的最佳选择。
📊 文章信息
AI 评分:92
精选文章:是
来源:Spring Blog
作者:bclozel
分类:软件编程
语言:英文
阅读时间:9 分钟
字数:2117
标签:
Spring 框架, HTTP 客户端, RestClient, RestTemplate, WebClient