大家好,我是R哥。

最近,Spring 官宣了一条重磅消息:

先扫盲一下,RestTemplate 是 Spring 框架提供的一个同步 HTTP 客户端工具类,简单易用,常用于在 Java 应用中发起 HTTP 请求,也用于微服务之间的调用。

为啥 RestTemplate 这么流行?

自从 2009 年 Spring 3.0 发布之后,RestTemplate 几乎成了 Java 开发者调用 HTTP 接口的标配。

使用 RestTemplate 的好处:

  • 简单好用:封装了各种 HTTP 方法;
  • 支持 POJO 映射:用 Jackson 自动把 JSON 转成 Java 对象;
  • 统一异常处理:支持各种异常机制;
  • 拦截器机制:支持请求/响应的拦截和改造;
  • 高度集成 Spring 生态:能无缝地和 Spring 全家桶配合使用。

可以说,RestTemplate 就是 Java 传统 HTTP 调用的天花板

从调用 RESTful API 到微服务通信,再到各种第三方平台的对接,哪里需要 HTTP 请求,哪里就有 RestTemplate 的身影。

但,现在时代变了……

为啥 Spring 要弃用 RestTemplate?

现在都 2025 年了,Java 的世界早已经大变样了

你以为你还活在 Java 8 古董时代?

Spring 全家桶最低依赖早就安排上 Java 17 了,Java 21 的 Virtual Threads 虚拟线程都快飞起来了,最新的长期支持版本 Java 25 也发布了。

Java 25 正式发布,炸裂!

在 Spring 6.1 中,官方推出了新的 RestClient,在即将发布的 Spring 7.0 中,RestTemplate 将会被官方标记为弃用(Deprecated),并在 Spring 8.0 中彻底移除。

因为 RestTemplate 的 API 是模板式的:

restTemplate.getForObject();
restTemplate.postForEntity();
restTemplate.exchange();

这种调用方式虽然简单,但已经跟不上时代了:

  • 方法重载太多,API 混乱;
  • 无法支持异步和流式处理;
  • 不支持(Streaming)流式响应;
  • 不方便扩展新功能;

比如,像即将发布的 Spring 7.0 版本中要新出的 API 版本控制、HTTP 客户端分组等很多功能,大部分都在 RestTemplate 上实现不了。

RestTemplate 曾经是 Java HTTP 客户端的王者,但它的设计模式已经跟不上 Java 生态的变化,官方不忍心整体生态被它挺累,所以选择让它退休。

还真有点食之无味,弃之可惜的感觉。

WebClient 和 RestClient 横空出世

Spring 团队当然不是直接砍掉 RestTemplate,他们也备好了两套新东西:

  • WebClient(Spring 5 引入)
  • RestClient(Spring 6.1 引入)

WebClient 早就有了,是异步非阻塞的响应式 HTTP 客户端,而 RestClient 正是为了替代 RestTemplate 而设计的新的同步阻塞式 HTTP 客户端

如下面的示例:

RestClient client = RestClient.builder()
    .baseUrl("https://api.javastack.cn")
    .build();

String result = client.get()
    .uri("/v3/wx/conditions/current?city=shenzhen")
    .retrieve()
    .body(String.class);

RestClient 它也采用了一个现代化的 Fluent API 封装,继承了 RestTemplate 的稳定和同步风格,但避开了模板式 API 的局限。

RestClient 的使用实战代码已上传 Github:

https://github.com/javastacks/spring-boot-best-practice/

RestTemplate 退休计划

RestTemplate 也不是立即弃用,这是 Spring 官方发布的退休计划:

Spring 版本 状态说明
7.0(2025/11) 官方博客和文档中声明弃用 RestTemplate
7.1(2026/11) 添加 @Deprecated 注解
8.0 移除 RestTemplate 相关代码
开源支持截止 至少维护到 2029 年

你现在用 RestTemplate 没问题,或许可以坚持到 2029 年,但至少要有个心理准备或者过渡计划。

RestClient 和 WebClient 是 Spring 新时代的产物,无论你是走常规路线,还是响应式路线,都是官方对应的主流解决方案。

所以,趁早迁移,避免将来手忙脚乱

更重要的是,RestClient 和 WebClient 都是现代化的 Fluent API,用起来比老 API 爽多了,不香吗?

最后,RestTemplate,江湖再见;RestClient,未来已来!

好了,今天的分享就到这里了,后续R哥也会继续关注并分享更多的 Java 资讯和干货,关注公众号Java技术栈第一时间推送。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注