領先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多親愛的 Spring 社群:
隨著 Spring HATEOAS 最近發布的 1.1.0.M3
版本,我們為您帶來了一種設定客戶端的新方式!
建構基於超媒體服務的第一步可能是設定您的伺服器,Spring HATEOAS 透過其 @EnableHypermediaSupport()
提供了很長時間。
下一個主要步驟是建構一個可以解析超媒體輸出的客戶端。 這一直都是可用的,但它要求您了解 Spring Framework 的一些最深層的內部結構。
直到今天。
透過最新版本的 Spring HATEOAS,配置 RestTemplate
、WebClient
或 WebTestClient
實例變得 *容易得多*。
RestTemplate
Spring HATEOAS 現在建立一個名為 HypermediaRestTemplateConfigurer
的 bean。 取得它,您可以將它應用於您擁有的任何 RestTemplate
實例。
@Bean
RestTemplate restTemplate(HypermediaRestTemplateConfigurer configurer) {
return configurer.registerHypermediaTypes(new RestTemplate());
}
此範例顯示在建立 RestTemplate
實例後,您可以透過其 registerHypermediaTypes
將其導入到 HypermediaRestTemplateConfigurer
中。 在這種情況下,它會在使用者的應用程式中註冊為 bean。
如果您正在使用 Spring Boot(您應該這樣做!),則有一種更好的方法。
@Bean
RestTemplateCustomizer restTemplateCustomizer(
HypermediaRestTemplateConfigurer configurer) {
return restTemplate -> {
configurer.registerHypermediaTypes(restTemplate);
};
}
這個 bean 會被選取並應用於 Spring Boot 自動配置的 RestTemplateBuilder
。 任何時候您需要 RestTemplate
,您只需注入 RestTemplateBuilder
,應用任何最終調整(憑證、快取設定等),然後調用 build()
。 這會為您提供一個具有超媒體支援的具體 RestTemplate
。
重要事項
Spring Boot 長期以來已經超越了在應用程式內容中註冊單一 RestTemplate
bean 的概念。 相反,它支援基於自訂器的途徑。 但是,如果您將 RestTemplate
註冊為 bean,Spring HATEOAS *仍然* 會自動配置它。
無論哪種方式,Spring HATEOAS 都能讓您輕鬆地使用 RestTemplate
註冊超媒體支援。
WebClient
實例如果您正在使用 Spring WebFlux 建構反應式應用程式,您可能很想使用 WebClient
,這是 Spring 最新的內建反應式客戶端。 要為超媒體進行接線,您需要取得 Spring HATEOAS 的 HypermediaWebClientConfigurer
。
@Bean
WebClient.Builder webClientBuilder(HypermediaWebClientConfigurer configurer) {
return configurer.registerHypermediaTypes(WebClient.builder());
}
這個 bean 會取得 HypermediaWebClientConfigurer
並將其應用於透過其靜態輔助方法 (builder()
) 建立的 WebClient.Builder
,並傳回 WebClient.Builder
。
還記得 Boot 有那個 RestTemplateBuilder
嗎? WebClient
已經在 Spring Framework 中有類似的東西。
如果您想在 Spring Boot 中設定東西,這是您執行此操作的方式
@Bean
WebClientCustomizer webClientCustomizer(HypermediaWebClientConfigurer configurer) {
return webClientBuilder -> {
configurer.registerHypermediaTypes(webClientBuilder);
};
}
Spring Boot 自動配置 WebClient.Builder
。 並且它應用任何 WebClientCustomizer
bean,使其非常容易新增超媒體支援。 要使用它,只需將 WebClient.Builder
注入到您的應用程式中,套用任何額外的設定(憑證等),然後點擊 build()
以取得 WebClient
實例。
這甚至支援 WebTestClient
,但這篇文章已經夠長了。 如果您也渴望在您的應用程式中包含基於超媒體的單元測試,請前往 仔細閱讀參考文檔。
乾杯!