最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot 3.0 新特性內置聲明式HTTP客戶端實例詳解

 更新時間:2022年12月02日 10:55:47   投稿:mrr  
聲明式 http 客戶端主旨是使得編寫 java http 客戶端更容易,為了貫徹這個理念,采用了通過處理注解來自動生成請求的方式,本文給大家詳解介紹SpringBoot 聲明式HTTP客戶端相關知識,感興趣的朋友跟隨小編一起看看吧

http interface

從 Spring 6 和 Spring Boot 3 開始,Spring 框架支持將遠程 HTTP 服務代理成帶有特定注解的 Java http interface。類似的庫,如 OpenFeign 和 Retrofit 仍然可以使用,但 http interface 為 Spring 框架添加內置支持。

什么是聲明式客戶端

聲明式 http 客戶端主旨是使得編寫 java http 客戶端更容易。為了貫徹這個理念,采用了通過處理注解來自動生成請求的方式(官方稱呼為聲明式、模板化)。通過聲明式 http 客戶端實現(xiàn)我們就可以在 java 中像調用一個本地方法一樣完成一次 http 請求,大大減少了編碼成本,同時提高了代碼可讀性。

舉個例子,如果想調用 /tenants 的接口,只需要定義如下的接口類即可

public interface TenantClient {

  @GetExchange("/tenants")
  Flux<User> getAll();
}

Spring 會在運行時提供接口的調用的具體實現(xiàn),如上請求我們可以如 Java 方法一樣調用

@Autowired
TenantClient tenantClient;

tenantClient.getAll().subscribe(

);

測試使用

1. maven 依賴

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- For webclient support -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

如下圖: 目前官方只提供了非阻塞 webclient 的 http interface 實現(xiàn),所以依賴中我們需要添加 webflux

2. 創(chuàng)建 Http interface 類型

需要再接口類上添加 @HttpExchange 聲明此類事 http interface 端點

@HttpExchange
public interface DemoApi {

    @GetExchange("/admin/tenant/list")
    String list();

方法上支持如下注解

@GetExchange:  for HTTP GET requests.
@PostExchange:  for HTTP POST requests.
@PutExchange: for HTTP PUT requests.
@DeleteExchange: for HTTP DELETE requests.
@PatchExchange:  for HTTP PATCH requests.

方法參數(shù)支持的注解

@PathVariable: 占位符參數(shù).
@RequestBody: 請求body.
@RequestParam: 請求參數(shù).
@RequestHeader: 請求頭.
@RequestPart: 表單請求.
@CookieValue: 請求cookie.

3. 注入聲明式客戶端

通過給 HttpServiceProxyFactory 注入攜帶目標接口 baseUrl 的的 webclient,實現(xiàn) webclient 和 http interface 的關聯(lián)

    @Bean
    DemoApi demoApi() {
        WebClient client = WebClient.builder().baseUrl("http://pigx.pigx.vip/").build();
        HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
        return factory.createClient(DemoApi.class);
    }

4. 單元測試調用 http interface

@SpringBootTest
class DemoApplicationTests {
	@Autowired
	private DemoApi demoApi;

	@Test
	void testDemoApi() {
		demoApi.list();
	}
}

基于Spring Boot 2.7、 Spring Cloud 2021 & Alibaba、 SAS OAuth2 一個可支持企業(yè)各業(yè)務系統(tǒng)或產品快速開發(fā)實現(xiàn)的開源微服務應用開發(fā)平臺

到此這篇關于SpringBoot 3.0 新特性,內置聲明式HTTP客戶端的文章就介紹到這了,更多相關SpringBoot 聲明式HTTP客戶端內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決spring-boot 打成jar包后 啟動時指定參數(shù)無效的問題

    解決spring-boot 打成jar包后 啟動時指定參數(shù)無效的問題

    這篇文章主要介紹了解決spring-boot 打成jar包后 啟動時指定參數(shù)無效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中RSA加密解密的實現(xiàn)方法分析

    Java中RSA加密解密的實現(xiàn)方法分析

    這篇文章主要介紹了Java中RSA加密解密的實現(xiàn)方法,結合具體實例形式分析了java實現(xiàn)RSA加密解密算法的具體步驟與相關操作技巧,并附帶了關于RSA算法密鑰長度/密文長度/明文長度的參考說明,需要的朋友可以參考下
    2017-07-07
  • IntelliJ IDEA安裝插件阿里巴巴Java開發(fā)手冊(Alibaba Java Coding Guidelines)

    IntelliJ IDEA安裝插件阿里巴巴Java開發(fā)手冊(Alibaba Java Coding Guidelines

    這篇文章主要介紹了IntelliJ IDEA安裝插件阿里巴巴Java開發(fā)手冊(Alibaba Java Coding Guidelines),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 深入理解Java設計模式之適配器模式

    深入理解Java設計模式之適配器模式

    這篇文章主要介紹了JAVA設計模式之適配器模式的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解
    2021-11-11
  • 解決mybatis執(zhí)行SQL語句部分參數(shù)返回NULL問題

    解決mybatis執(zhí)行SQL語句部分參數(shù)返回NULL問題

    這篇文章主要介紹了mybatis執(zhí)行SQL語句部分參數(shù)返回NULL問題,需要的的朋友參考下吧
    2017-06-06
  • SpringCloud中的分布式鎖用法示例詳解(Java+Redis SETNX命令)

    SpringCloud中的分布式鎖用法示例詳解(Java+Redis SETNX命令)

    在Spring Cloud項目中,使用Java和Redis結合實現(xiàn)的分布式鎖可以確保訂單的一致性和并發(fā)控制,分布式鎖的使用能夠在多個實例同時提交訂單時,僅有一個實例可以成功進行操作,本文給大家介紹Spring,Cloud中的分布式鎖用法詳解(Java+Redis SETNX命令),感興趣的朋友一起看看吧
    2023-10-10
  • Java對接阿里云短信服務保姆級教程(新手秒會)

    Java對接阿里云短信服務保姆級教程(新手秒會)

    這篇文章主要介紹了如何在阿里云上申請短信服務以及如何使用Java代碼進行對接,包括申請資質、簽名和模板,以及編寫Java代碼整合成工具類進行調用的步驟,需要的朋友可以參考下
    2024-12-12
  • springmvc如何進行異常處理

    springmvc如何進行異常處理

    這篇文章主要介紹了springmvc如何進行異常處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • SpringBoot無法連接redis的解決方案

    SpringBoot無法連接redis的解決方案

    這篇文章主要介紹了SpringBoot無法連接redis的解決方案,文中通過代碼示例給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • Java基礎篇之反射機制示例詳解

    Java基礎篇之反射機制示例詳解

    反射是Java可以提供的一個靈活又強大的功能,使用Java反射,您可以知道這個類在運行時具有什么屬性和方法,也可以修改屬性,調用方法,創(chuàng)建類的實例,這篇文章主要給大家介紹了關于Java基礎篇之反射機制的相關資料,需要的朋友可以參考下
    2021-11-11

最新評論

苍南县| 环江| 屏南县| 张家港市| 神农架林区| 通许县| 突泉县| 霍城县| 西乡县| 札达县| 万荣县| 陕西省| 涞水县| 资阳市| 涟源市| 武宣县| 六枝特区| 陈巴尔虎旗| 腾冲县| 张家界市| 宁都县| 丹阳市| 大庆市| 镶黄旗| 大方县| 岳阳市| 德兴市| 苏州市| 安图县| 荥阳市| 临清市| 同德县| 武胜县| 高淳县| 肥乡县| 乐都县| 高密市| 那曲县| 望城县| 元氏县| 乡城县|