SpringBoot(14)——使用WebClient
使用WebClient
WebClient是Spring WebFlux模組提供的一個非阻塞的基於響應式程式設計的進行Http請求的客戶端工具,從Spring5.0開始提供。Spring Boot應用中新增如下依賴將自動新增Spring WebFlux依賴,從而可以使用WebClient。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
Spring Boot的org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration.
會自動配置一個WebClient.Builder
型別的bean。在需要使用WebClient的時候在程式中注入一個WebClient.Builder
物件,通過對它進行自定義來生成對應的WebClient物件,從而作為客戶端進行Web請求。下面是一個簡單的示例。
@Service
public class WebClientService {
private final WebClient webClient;
public WebClientService(WebClient.Builder builder) {
this.webClient = builder.baseUrl("http://localhost:8081").build();
}
public String getJson() {
return this.webClient.get().uri("hello/json").retrieve().bodyToMono(String.class).block();
}
}
WebClientCustomizer
Spring Boot提供了org.springframework.boot.web.reactive.function.client.WebClientCustomizer
介面定義,它允許我們通過實現該介面對WebClient進行一些通用的自定義,然後將該介面的實現類定義為Spring bean。Spring Boot在建立WebClient例項時會在bean容器中尋找WebClientCustomizer型別的bean,一一呼叫它們的customize()
方法以便對WebClient進行一些自定義。下面的程式碼中就對WebClient新增了一個預設的Cookie和一個預設的Header。
@Component
public class MyWebClientCustomizer implements WebClientCustomizer {
@Override
public void customize(Builder webClientBuilder) {
webClientBuilder.defaultCookie("cookieName", "cookieValue").defaultHeader("headerName", "headerValue");
}
}
CodecCustomizer
如果需要定義自己的編解碼工具,則可以實現org.springframework.boot.web.codec.CodecCustomizer介面,把它定義為Spring bean,通過其customize()
方法可以獲取到org.springframework.http.codec.CodecConfigurer
物件,從而可以註冊新的編解碼工具,或對現有的編解碼工具進行替換等。
本文主要介紹在Spring Boot工程中如何應用WebClient,關於WebClient的基本用法可以參考http://elim.iteye.com/blog/2427658。
(注:本文基於Spring Boot 2.0.3所寫)
相關文章
- springboot3/14Spring Boot
- 使用note++開發SAP WebClient UIWebclientUI
- 如何在SAP WebClient UI裡使用jChartFXWebclientUI
- SpringBoot(14)—註解裝配BeanSpring BootBean
- 如何在CRM WebClient UI裡使用HANA Live ReportWebclientUI
- 如何在SAP WebClient UI裡使用HANA Live reportWebclientUI
- 使用Selenium自動化測試SAP CRM WebClient UIWebclientUI
- 2020-11-14springboot學習筆記03Spring Boot筆記
- RestTemplate、WebClient 和 RestClientRESTWebclient
- 使用SAP Transaction Launcher將ABAP Webdynpro嵌入到WebClient UI中WebclientUI
- SpringBoot之:SpringBoot中使用HATEOASSpring Boot
- SpringBoot使用JdbcTemplateSpring BootJDBC
- SpringBoot使用LomBokSpring BootLombok
- SpringBoot使用JPASpring Boot
- SpringBoot使用WebSocketSpring BootWeb
- springboot 使用 rocketMQSpring BootMQ
- SpringBoot使用RedisSpring BootRedis
- SpringBoot使用WebJarsSpring BootWebJAR
- SpringBoot使用AOPSpring Boot
- 使用Resilience4J增強Spring WebClient容錯性 – ArnoldSpringWebclient
- HttpWebRequest和WebClient的用法HTTPWebclient
- WPF WebClient EAP async awaitWebclientAI
- Spring WebClient vs. RestTemplateSpringWebclientREST
- 精講響應式WebClient第3篇-POST、DELETE、PUT方法使用Webclientdelete
- Vue(14)slot插槽的使用Vue
- SpringBoot(17)——使用SpringDataJPASpring Boot
- SpringBoot AOP的使用Spring Boot
- SpringBoot(11)——使用SpringCacheSpring BootGC
- SpringBoot使用外部tomcatSpring BootTomcat
- springboot 使用mustcache模板Spring Boot
- SpringBoot使用快取Spring Boot快取
- SpringBoot 使用 Redis GeoSpring BootRedis
- springboot + activeMQ基本使用Spring BootMQ
- springboot整合使用JdbcTemplateSpring BootJDBC
- _005_SpringBoot_使用IDEA建立SpringBoot專案Spring BootIdea
- 在SAP WebClient UI裡使用AJAX進行非同步資料讀取WebclientUI非同步
- 在 CRM WebClient UI 中使用純 JavaScript 顯示 3D 足球效果WebclientUIJavaScript3D
- MacBook Pro 14使用深度體驗Mac