提问人:Pourya Aliannejadi 提问时间:11/10/2023 最后编辑:Nikolai ShevchenkoPourya Aliannejadi 更新时间:11/10/2023 访问量:41
在 2023 年将 RestTemplate 与 Spring Boot 2.7 一起使用是否有效?
Is it valid to use RestTemplate in 2023 with Spring Boot 2.7?
问:
在寻找连接微服务的方法时,我注意到有人推荐 WebClient,因为 RestTemplate 可能会被弃用。但是,在 Spring 6 中,RestTemplate 还没有被弃用。我的项目不需要异步,所以 WebClient 可能会使事情复杂化并增加更多麻烦。不过,我还是想避免技术债务。这里最好的举动是什么?
我尝试在我的项目中使用 WebClient,但我的项目中也有 Eureka,所以我注意到 Eureka 将与 RestTemplate 一起使用,使其与 WebClient 一起使用需要一些额外的配置。
答:
RestTemplate 未标记为已弃用,但可以在它的注释中找到(从版本 5.x 到 6.0.x):
注意:从 5.0 开始,此类处于维护模式,只有次要的 今后接受更改和错误的请求。请 考虑使用 org.springframework.web.reactive.client.WebClient 它具有更现代的 API,并支持同步、异步和流式处理 场景。
这已更改为(从版本 6.1.x -):
注意:从 6.1 开始,RestClient 为同步提供了更现代的 API HTTP 访问。对于异步和流式处理方案,请考虑 反应式 WebClient。
因此,如果您能够升级并且不需要异步和流式处理方案,您可能应该使用 (https://spring.io/blog/2023/07/13/new-in-spring-6-1-restclient) 来最大程度地减少技术债务。
以下是他们公告中的一句话:RestClient
十四年前,当 Spring Framework 3.0 中引入 RestTemplate 时,我们很快发现,在类似模板的类中公开 HTTP 的所有功能会导致太多重载方法。因此,在 Spring Framework 5 中,我们为响应式 WebClient 使用了流畅的 API。在 RestClient 中,我们引入了一个 HTTP 客户端,它提供了一个类似于 WebClient 的 API,它使用消息转换器、请求工厂、拦截器和 RestTemplate 的其他底层组件。
这也跳过了对依赖关系的需求。spring-boot-starter-webflux
评论
RestTemplate
未弃用,也从未弃用 (AFAIK)。它只会在维护模式下获得新功能。Spring 6.1 获得了 .RestClient
WebClient