<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
從 Spring 6 和 Spring Boot 3 開始,Spring 框架支援將遠端 HTTP 服務代理成帶有特定註解的 Java http interface。類似的庫,如 OpenFeign 和 Retrofit 仍然可以使用,但 http interface 為 Spring 框架新增內建支援。
宣告式 http 使用者端主旨是使得編寫 java http 使用者端更容易。為了貫徹這個理念,採用了通過處理註解來自動生成請求的方式(官方稱呼為宣告式、模板化)。通過宣告式 http 使用者端實現我們就可以在 java 中像呼叫一個本地方法一樣完成一次 http 請求,大大減少了編碼成本,同時提高了程式碼可讀性。
舉個例子,如果想呼叫 /tenants 的介面,只需要定義如下的介面類即可
public interface TenantClient { @GetExchange("/tenants") Flux<User> getAll(); }
Spring 會在執行時提供介面的呼叫的具體實現,如上請求我們可以如 Java 方法一樣呼叫
@Autowired TenantClient tenantClient; tenantClient.getAll().subscribe( );
<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 實現,所以依賴中我們需要新增 webflux
需要再介面類上新增 @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.
方法引數支援的註解
@PathVariable: 預留位置引數. @RequestBody: 請求body. @RequestParam: 請求引數. @RequestHeader: 請求頭. @RequestPart: 表單請求. @CookieValue: 請求cookie.
通過給 HttpServiceProxyFactory 注入攜帶目標介面 baseUrl 的的 webclient,實現 webclient 和 http interface 的關聯
@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); }
@SpringBootTest class DemoApplicationTests { @Autowired private DemoApi demoApi; @Test void testDemoApi() { demoApi.list(); } }
基於Spring Boot 2.7、 Spring Cloud 2021 & Alibaba、 SAS OAuth2 一個可支援企業各業務系統或產品快速開發實現的開源微服務應用開發平臺
到此這篇關於SpringBoot 3.0 新特性,內建宣告式HTTP使用者端的文章就介紹到這了,更多相關SpringBoot 宣告式HTTP使用者端內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45