若是你的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