若是你的classpath上有Spring WebFlux,那么你还能够选择使用WebClient
来调用远程REST服务,与RestTemplate
相比,这个客户端具备更强的功能性,而且彻底具备响应性。你能够使用builder,WebClient.create()
建立本身的客户端实例,请参阅有关WebClient的部分。html
Spring Boot为你建立并预先配置这样的构建器,例如,客户端HTTP编解码器的配置方式与服务器编解码器的配置方式相同(请参阅WebFlux HTTP编解码器自动配置)。react
下面的代码展现了一个典型的例子:web
@Service public class MyService { private final WebClient webClient; public MyService(WebClient.Builder webClientBuilder) { this.webClient = webClientBuilder.baseUrl("http://example.org").build(); } public Mono<Details> someRestCall(String name) { return this.webClient.get().url("/{name}/details", name) .retrieve().bodyToMono(Details.class); } }
WebClient
定制有三种主要方法,这取决于你但愿定制的应用范围有多广。spring
要使任何定制的范围尽量狭窄,请注入自动配置的WebClient.Builder
,而后根据须要调用其方法,WebClient.Builder
实例是有状态的:构建器上的任何更改都反映在随后使用它建立的全部客户端中,若是想用同一个构建器建立多个客户端,还能够考虑使用WebClient.Builder other = builder.clone();
克隆构建器。segmentfault
为全部WebClient.Builder
实例进行应用程序级的附加定制,你能够声明WebClientCustomizer
bean并在注入点局部的更改WebClient.Builder
。服务器
最后,你能够回到原来的API并使用WebClient.create()
,在这种状况下,不该用自动配置或WebClientCustomizer
。spring-boot