网站建设统计表,非常强大的wordpress主题,防城港网站设计公司,个人网站如何提高访问量在 Spring 5 之前#xff0c;如果我们想要调用其他系统提供的 HTTP 服务#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问#xff0c;不过由于 RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端#xff0c;因此存在一定性能瓶颈。根据 Spring 官方文档…在 Spring 5 之前如果我们想要调用其他系统提供的 HTTP 服务通常可以使用 Spring 提供的 RestTemplate 来访问不过由于 RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端因此存在一定性能瓶颈。根据 Spring 官方文档介绍在将来的版本中它可能会被弃用。
作为替代Spring 官方已在 Spring 5 中引入了 WebClient 作为非阻塞式 Reactive HTTP 客户端。
一 基本介绍
1 什么是WebClient
从 Spring 5 开始Spring 中全面引入了 Reactive 响应式编程。而 WebClient 则是 Spring WebFlux 模块提供的一个非阻塞的基于响应式编程的进行 Http 请求的客户端工具。由于 WebClient 的请求模式属于异步非阻塞能够以少量固定的线程处理高并发的 HTTP 请求。因此从 Spring 5 开始HTTP 服务之间的通信我们就可以考虑使用 WebClient 来取代之前的 RestTemplate。
2 WebClient 的优势
1与 RestTemplate 相比WebClient 有如下优势
非阻塞Reactive 的并支持更高的并发性和更少的硬件资源。提供利用 Java 8 lambdas 的函数 API。支持同步和异步方案。支持从服务器向上或向下流式传输。
2RestTemplate 不适合在非阻塞应用程序中使用因此 Spring WebFlux 应用程序应始终使用 WebClient。在大多数高并发场景中WebClient 也应该是 Spring MVC 中的首选并且用于编写一系列远程相互依赖的调用。
3 使用配置
在pom文件里,导入一下配置即可
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webflux/artifactId
/dependency
二 创建WebClient实例
1 使用 create() 创建
WebClient.create(): 这是 WebClient 的静态工厂方法之一。调用 WebClient.create() 将直接创建一个默认配置的 WebClient 实例。这个实例可以立即使用而无需进行进一步的配置。它使用默认的 WebFlux 配置和默认的 WebClientOptions。
WebClient webClient WebClient.create();
public Order queryOrderById(Long orderId) {// 1. 查询订单Order order orderMapper.findById(orderId);// 2. 构造远程调用的 URLString url http://localhost:8081/user/ order.getUserId();// 3. 发起远程调用使用 WebClient 替代 RestTemplateUser user webClient.get().uri(url).retrieve().bodyToMono(User.class).block(); // 使用 block() 方法等待结果返回或者使用 reactive 链式编程来处理响应// 4. 封装 user 到 orderorder.setUser(user);// 5. 返回 orderreturn order;
}
2 使用builder 创建推荐
WebClient.builder(): 这是 WebClient 的另一个静态工厂方法。调用 WebClient.builder() 将返回一个 WebClient.Builder 对象您可以在该对象上进行更多的配置。使用 WebClient.Builder您可以设置各种选项如超时时间、连接池大小、拦截器、错误处理等。
WebClient webClient WebClient.builder().baseUrl(https://api.example.com).defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).build();
三 总结
create() 方法提供了一种简单快速创建默认配置 WebClient 实例的方式而 builder() 方法则提供了更灵活的配置选项