SpringCloud——OpenFeign

概述:

OpenFeign是基于Spring的聲明式調用的HTTP客戶端,大大簡化了編寫Web服務客戶端的過程,用于快速構建http請求調用其他服務模塊。同時也是spring cloud默認選擇的服務通信工具。

使用方法:

?RestTemplate手動構建:

// 帶查詢參數的Get請求
String url = "https://api.example.com/users?name={name}&age={age}";
Map<String, Object> params = new HashMap<>();
params.put("name", "John");
params.put("age", 25);
User users = restTemplate.getForObject(url, User.class, params);
// 簡單Post請求
String url = "https://api.example.com/users";
User newUser = new User("John", "Doe");
User createdUser = restTemplate.postForObject(url, newUser, User.class);

OpenFeign聲明式接口:

相較于RestTemplate和OkHttp完整構建請求頭、請求體和url的過程。OpenFeign支持聲明服務接口類,并使用springMVC的風格定義請求(@RequestMapping)。

@FeignClient(name = " ",url=" ")

我們需要創建一個接口并使用@FeingClient注解聲明接口

  • 沒有使用nacos,則我們需要在url中指定對應模塊的http地址(包含IP和端口)
  • 使用了nacos,則@FeingClient會通過name獲取對應實例列表(動態服務發現),并通過負載均衡獲取其中一個健康實例的IP和端口等信息(負載均衡)
  • FeignClient最后會在FeignClientFactory中拼接模塊實例的IP、端口和當前接口方法的RequestMapping信息生成構建好的http客戶端對象(動態代理對象)并注入到spring容器中
// 啟用組件
@SpringBootApplication
@EnableDiscoveryClient  // 啟用Nacos服務發現(可選,選擇后可通過FeignClient注解的name屬性獲取對應模塊實例列表)
@EnableFeignClients     // 啟用OpenFeign(為FeignClient生成動態代理對象并注入到spring容器中)
public class Application { }
// 如果未結合服務注冊(Nacos)則需要硬編碼指定url
@FeignClient(name = "user-service",url = "")
public interface UserClient {@GetMapping("/users/{id}")User getUser(@PathVariable Long id);
}
// 掃描對應包下的FeignClient接口(一般放在公共依賴中)
@EnableFeignClients(basePackages = "com.example.feign.api")
@SpringBootApplication
public class OrderApplication { ... }

補充:

整合了OpenFeign和Nacos后才能通過name屬性發現nacos中注冊好的模塊實例列表并通過Ribbon或LoadBalancer的負載均衡策略選擇適合的健康實例,構建對應的代理對象到spring容器中。

我們可以實現RequestInterceptor接口來對請求進行攔截,實現請求的精細控制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82707.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【深入學習Linux】System V共享內存

目錄 前言 一、共享內存是什么&#xff1f; 共享內存實現原理 共享內存細節理解 二、接口認識 1.shmget函數——申請共享內存 2.ftok函數——生成key值 再次理解ftok和shmget 1&#xff09;key與shmid的區別與聯系 2&#xff09;再理解key 3&#xff09;通過指令查看/釋放系統中…

探索 Java 垃圾收集:對象存活判定、回收流程與內存策略

個人主頁-愛因斯晨 文章專欄-JAVA學習筆記 熱門文章-賽博算命 一、引言 在 Java 技術體系里&#xff0c;垃圾收集器&#xff08;Garbage Collection&#xff0c;GC&#xff09;與內存分配策略是自動內存管理的核心支撐。深入探究其原理與機制&#xff0c;對優化程序內存性能…

hbase資源和數據權限控制

hbase適合大數據量下點查 https://zhuanlan.zhihu.com/p/471133280 HBase支持對User、NameSpace和Table進行請求數和流量配額限制&#xff0c;限制頻率可以按sec、min、hour、day 對于請求大小限制示例&#xff08;5K/sec,10M/min等&#xff09;&#xff0c;請求大小限制單位如…

大數據-275 Spark MLib - 基礎介紹 機器學習算法 集成學習 隨機森林 Bagging Boosting

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; 大模型篇章已經開始&#xff01; 目前已經更新到了第 22 篇&#xff1a;大語言模型 22 - MCP 自動操作 FigmaCursor 自動設計原型 Java篇開…

Delphi 實現遠程連接 Access 數據庫的指南

方法一&#xff1a;通過局域網共享 Access 文件&#xff08;簡單但有限&#xff09; 步驟 1&#xff1a;共享 Access 數據庫 將 .mdb 或 .accdb 文件放在局域網內某臺電腦的共享文件夾中。 右鍵文件夾 → 屬性 → 共享 → 啟用共享并設置權限&#xff08;需允許網絡用戶讀寫&a…

VR視頻制作有哪些流程?

VR視頻制作流程知識 VR視頻制作&#xff0c;作為融合了創意與技術的復雜制作過程&#xff0c;涵蓋從初步策劃到最終呈現的多個環節。在這個過程中&#xff0c;我們可以結合眾趣科技的產品&#xff0c;解析每一環節的實現與優化&#xff0c;揭示背后的奧秘。 VR視頻制作有哪些…

文件上傳/下載接口開發

接口特性 文件傳輸接口與傳統接口的核心差異體現在數據傳輸格式&#xff1a; 上傳接口采用 multipart/form-data 格式支持二進制文件傳輸下載接口接收二進制流并實現本地文件存儲 文件上傳接口開發 接口規范 請求地址&#xff1a;/createbyfile 請求方式&#xff1a;POST…

深入學習RabbitMQ隊列的知識

目錄 1、AMQP協議 1.1、介紹 1.2、AMQP的特點 1.3、工作流程 1.4、消息模型 1.5、消息結構 1.6、AMQP 的交換器類型 2、RabbitMQ結構介紹 2.1、核心組件 2.2、最大特點 2.3、工作原理 3、消息可靠性保障 3.1、生產端可靠性 1、生產者確認機制 2、持久化消息 3.…

【計算機網絡】NAT、代理服務器、內網穿透、內網打洞、局域網中交換機

&#x1f525;個人主頁&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收錄專欄&#x1f308;&#xff1a;計算機網絡 &#x1f339;往期回顧&#x1f339;&#xff1a;【計算機網絡】數據鏈路層——ARP協議 &#x1f516;流水不爭&#xff0c;爭的是滔滔不息 一、網絡地址轉…

[論文閱讀] 人工智能 | 大語言模型計劃生成的新范式:基于過程挖掘的技能學習

#論文閱讀# 大語言模型計劃生成的新范式&#xff1a;基于過程挖掘的技能學習 論文信息 Skill Learning Using Process Mining for Large Language Model Plan Generation Andrei Cosmin Redis, Mohammadreza Fani Sani, Bahram Zarrin, Andrea Burattin Cite as: arXiv:2410.…

C文件操作2

五、文件的隨機讀寫 這些函數都需要包含頭文件 #include<stdio.h> 5.1 fseek 根據文件指針的位置和偏移量來定位文件指針&#xff08;文件內容的光標&#xff09; &#xff08;重新定位流位置指示器&#xff09; int fseek ( FILE * stream, long int offset, int or…

react私有樣式處理

react私有樣式處理 Nav.jsx Menu.jsx vue中通過scoped來實現樣式私有化。加上scoped&#xff0c;就屬于當前組件的私有樣式。 給視圖中的元素都加了一個屬性data-v-xxx&#xff0c;然后給這些樣式都加上屬性選擇器。&#xff08;deep就是不加屬性也不加屬性選擇器&#xff09; …

【信創-k8s】海光/兆芯+銀河麒麟V10離線部署k8s1.31.8+kubesphere4.1.3

? KubeSphere V4已經開源半年多&#xff0c;而且v4.1.3也已經出來了&#xff0c;修復了眾多bug。介于V4優秀的LuBan架構&#xff0c;核心組件非常少&#xff0c;資源占用也顯著降低&#xff0c;同時帶來眾多功能和便利性。我們決定與時俱進&#xff0c;使用1.30版本的Kubernet…

單片機內部結構基礎知識 FLASH相關解讀

一、總線簡單說明 地址總線、控制總線、數據總線 什么是8位8051框架結構的微控制器&#xff1f; 數據總線寬度為8位&#xff0c;即CPU一次處理或傳輸的數據量為8位&#xff08;1字節&#xff09; 同時還有一個16位的地址總線&#xff0c;這個地方也剛好對應了為什么能看到內存…

HTTPS加密的介紹

HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff0c;超文本傳輸安全協議&#xff09;是HTTP協議的安全版本。它在HTTP的基礎上加入了SSL/TLS協議&#xff0c;用于對數據進行加密&#xff0c;并確保數據傳輸過程中的機密性、完整性和身份驗證。 在HTTPS出現之前&a…

【freertos-kernel】stream_buffer

文章目錄 補充任務通知發送處理ulTaskGenericNotifyTakexTaskGenericNotifyWait 清除xTaskGenericNotifyStateClearulTaskGenericNotifyValueClear 結構體StreamBufferHandle_tStreamBufferCallbackFunction_t 創建xStreamBufferGenericCreatestream buffer的類型 刪除vStreamB…

在word中點擊zotero Add/Edit Citation沒有反應的解決辦法

重新安裝了word插件 1.關掉word 2.進入Zotero左上角編輯-引用 3.往下滑找到Microsoft Word&#xff0c;點重新安裝加載項

新華三H3CNE網絡工程師認證—Easy IP

Easy IP 就是“用路由器自己的公網IP&#xff0c;給全家所有設備當共享門牌號”的技術&#xff01;&#xff08;省掉額外公網IP&#xff0c;省錢又省配置&#xff01;&#xff09; 生活場景對比&#xff0c;想象你住在一個小區&#xff1a;普通動態NAT&#xff1a;物業申請了 …

算法打開13天

41.前 K 個高頻元素 &#xff08;力扣347題&#xff09; 給你一個整數數組 nums 和一個整數 k &#xff0c;請你返回其中出現頻率前 k 高的元素。你可以按 任意順序 返回答案。 示例 1: 輸入: nums [1,1,1,2,2,3], k 2 輸出: [1,2]示例 2: 輸入: nums [1], k 1 輸出: …

LabVIEW與PLC液壓泵測控系統

針對液壓泵性能測試場景&#xff0c;采用LabVIEW與西門子 PLC 控制系統&#xff0c;構建高精度、高可靠性的智能測控系統。通過選用西門子 PLC、NI 數據采集卡、施耐德變頻電機等&#xff0c;結合LabVIEW 強大的數據處理與界面開發能力&#xff0c;實現液壓泵壓力、流量、轉速等…