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

SpringBoot 3.0 新特性內(nèi)置聲明式HTTP客戶端實(shí)例詳解

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

http interface

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

什么是聲明式客戶端

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

舉個(gè)例子,如果想調(diào)用 /tenants 的接口,只需要定義如下的接口類即可

public interface TenantClient {

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

Spring 會(huì)在運(yùn)行時(shí)提供接口的調(diào)用的具體實(shí)現(xiàn),如上請(qǐng)求我們可以如 Java 方法一樣調(diào)用

@Autowired
TenantClient tenantClient;

tenantClient.getAll().subscribe(

);

測(cè)試使用

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 實(shí)現(xiàn),所以依賴中我們需要添加 webflux

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

需要再接口類上添加 @HttpExchange 聲明此類事 http interface 端點(diǎn)

@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: 請(qǐng)求body.
@RequestParam: 請(qǐng)求參數(shù).
@RequestHeader: 請(qǐng)求頭.
@RequestPart: 表單請(qǐng)求.
@CookieValue: 請(qǐng)求cookie.

3. 注入聲明式客戶端

通過給 HttpServiceProxyFactory 注入攜帶目標(biāo)接口 baseUrl 的的 webclient,實(shí)現(xiàn) webclient 和 http interface 的關(guān)聯(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. 單元測(cè)試調(diào)用 http interface

@SpringBootTest
class DemoApplicationTests {
	@Autowired
	private DemoApi demoApi;

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

    深入理解Java設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之適配器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    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項(xiàng)目中,使用Java和Redis結(jié)合實(shí)現(xiàn)的分布式鎖可以確保訂單的一致性和并發(fā)控制,分布式鎖的使用能夠在多個(gè)實(shí)例同時(shí)提交訂單時(shí),僅有一個(gè)實(shí)例可以成功進(jìn)行操作,本文給大家介紹Spring,Cloud中的分布式鎖用法詳解(Java+Redis SETNX命令),感興趣的朋友一起看看吧
    2023-10-10
  • Java對(duì)接阿里云短信服務(wù)保姆級(jí)教程(新手秒會(huì))

    Java對(duì)接阿里云短信服務(wù)保姆級(jí)教程(新手秒會(huì))

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

    springmvc如何進(jìn)行異常處理

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

    SpringBoot無法連接redis的解決方案

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

    Java基礎(chǔ)篇之反射機(jī)制示例詳解

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

最新評(píng)論

沧源| 罗山县| 富顺县| 新野县| 治多县| 杂多县| 府谷县| 承德县| 昌吉市| 清苑县| 南木林县| 友谊县| 赣榆县| 井冈山市| 宁陵县| 准格尔旗| 泰来县| 南木林县| 罗甸县| 赣榆县| 区。| 兴山县| 盐城市| 叶城县| 肥西县| 禄劝| 巩义市| 抚州市| 彰化市| 乐平市| 台中县| 哈尔滨市| 静宁县| 图们市| 泾源县| 上高县| 巴塘县| 偏关县| 海盐县| 仁化县| 彝良县|