Kay*_*ayV 31 spring reactive-programming web-client resttemplate
按照春季5:
WebClient是表示执行Web请求的主要入口点的接口.
它已作为Spring Web Reactive模块的一部分创建,并将在这些场景中替换经典的RestTemplate.新客户端是一种通过HTTP/1.1协议工作的反应式非阻塞解决方案
这是否意味着,如果我们想要升级到Spring 5,我们需要使用RestTemplate重新编码旧应用程序?
或者在Spring 5中使用RestTemplate有一些解决方法?
pvp*_*ran 37
不,RestTemplate将继续存在.您不必使用WebClient替换它.
其中一个主要区别是RestTemplate是同步和阻塞.即当你进行休息通话时,你需要等到响应回来继续进行.
但WebClient完全与此相反.呼叫者不必等到响应回来.相反,他会在有回复时得到通知.
如果您需要这样的功能,那么您需要使用WebClient替换Resttemplate.
你可以在webclient中实现Rest模板,如同步处理.block().但另一种方式是不可能的.
Evg*_*rov 32
根据Java Doc,RestTemplate将被弃用.Spring团队建议尽可能使用WebClient:
注意:从5.0开始,非阻塞,反应式org.springframework.web.reactive.client.WebClient提供了RestTemplate的现代替代方案,同时有效支持同步和异步以及流方案.RestTemplate将在未来版本中弃用,并且不会在未来添加主要的新功能.
根据公告,从 Spring 6.1 和 Spring Boot 3.2 开始,我们有一个全新的选项,称为RestClient:
Spring Framework 6.1 M2 引入了RestClient,一个新的同步 HTTP 客户端。顾名思义,RestClient 通过 RestTemplate 的基础设施提供 WebClient 的流畅 API。
RestClient restClient = RestClient.create();
String result = restClient.get()
.uri("https://example.com")
.retrieve()
.body(String.class);
Run Code Online (Sandbox Code Playgroud)
根据 的JavaDoc ,RestTemplate现在推荐替换:
注意:从 6.1 开始,RestClient 为同步 HTTP 访问提供了更现代的 API。
新的 RestClient 还可以与最近引入的声明性 HTTP 接口一起使用,而无需在类路径中包含 Webflux。
RestClient restClient = RestClient.builder().baseUrl("https://api.github.com/").build();
RestClientAdapter adapter = RestClientAdapter.create(restClient);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();
RepositoryService service = factory.createClient(RepositoryService.class);
Run Code Online (Sandbox Code Playgroud)
小智 6
RestTemplate并没有真正被弃用。但以后不会再进化了。RestTemplate因此,如果它能满足您的需要,那么坚持是完全有效的。
另一种说法是,如果您需要特定的使用模式,例如流式传输、分散/聚集或自定义超时,则不会涵盖这些模式,RestTemplate您需要使用WebClient它。
现在在阻塞应用程序中使用WebClient也很好。使用block()应该不会有什么坏处,Spring MVC 控制器确实部分支持反应式返回类型。
WebClient 是非阻塞客户端,RestTemplate 是阻塞客户端。
长期以来,Spring 充当 Web 客户。在底层,RestTemplate使用 Java API API,该 API 基于主题模型。这意味着事务将被阻止,直到客户端收到响应。阻塞代码的问题是由于任意一串内存和CPU周期的存在造成的。让我们考虑许多正在等待生成结果所需的低服务的应用程序。迟早,对结果的请求会被收集。因此,程序会产生许多问题,导致线程池耗尽或占用所有可用内存。我们还可以体验到由于cpu切换带来的性能表现。
Spring WebClient 与 RestTemplate
| 归档时间: |
|
| 查看次数: |
17126 次 |
| 最近记录: |