日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Spring Cloud OpenFeign 動態(tài)Url

 竹林湘館 2021-05-15

版權聲明:本文為CSDN博主「markix」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:

https://blog.csdn.net/qq_31772441/article/details/102531862



劃重點:文中提到的 Spring Cloud OpenFeign 和 OpenFeign 不是同一個東西?。?!

關于區(qū)別:簡單來講 Spring Cloud OpenFeign 是基于 OpenFeign 進行包裝,集成了 SpringMVC的注解等方便SpringBoot項目開發(fā)的一個組件。

OpenFeign github地址、文檔

Spring Cloud OpenFeign github地址、官方主頁 、官方文檔

近期需要通過http調用一個url地址可能會發(fā)生變化的第三方api接口,由于之前使用過OpenFeign,自然想到用Feign來實現(xiàn),而項目又是SpringCloud項目,再自然的想到了使用 Spring Cloud OpenFeign來實現(xiàn)。

簡單概括就是:使用Spring Cloud OpenFeign實現(xiàn) 動態(tài)url的接口請求

其實之前就試過OpenFeign實現(xiàn)動態(tài)的url請求,相關分享在 跳轉鏈接。 具體實現(xiàn)就是在接口方法加上 URI參數(shù),該URI參數(shù)會動態(tài)替換掉原有的url。

而在Spring Cloud OpenFeign中,實現(xiàn)思路基本等同于OpenFeign,不過由于Spring Cloud OpenFeign集成了眾多組件(ribbon、hystrix),所以相關配置還是有很多不同。

示例

maven依賴

客戶端代碼

逐個解析下相關細節(jié):

接口方法的定義使用了SpringMVC的注解 @GetMapping、@RequestParam,其實SpringMVC的其他注解在此處都是支持的。(有其他文章提到也支持OpenFeign原有的注解@RequestLine、@Param等,但博主實測是不支持的,相關解析類為 feign.Contract,這個存疑)

在使用方式上,OpenFeign需要手動構建代理對象,Spring Cloud OpenFeign 不同于 OpenFeign, Spring Cloud OpenFeign 幫我們自動生成了接口的代理對象(即實現(xiàn)類),并且注冊到Spring中,我們可以很方便的使用 @Autowired 注入代理對象然后使用。其默認的代理對象是 LoadBalancerFeignClient。還有一個代理對象是 feign.Client.Default。兩者區(qū)別在于:

LoadBalancerFeignClient 通過服務名(下文提到)從Eureka查找相關的節(jié)點地址url,發(fā)起調用。

feign.Client.Default 僅是簡單的直接調用。

@FeignClient(name = "ThirdPartyAPI", url = "http://10.1.2.3:8080")

name 屬性是 @FeignClient 注解必要的!不定義時會報錯,其默認指代Eureka上的服務名。

url 屬性,這是重點了! url屬性指定什么值其實不重要,因為最終都會被方法的URI參數(shù)值替換掉,它在這里另一個重要的作用,就是將接口的代理對象變成feign.Client.Default(上文提到默認是LoadBalancerFeignClient),這樣就繞過了從Eureka取節(jié)點地址這一步,畢竟第三方的地址不可能注冊到我們的Eureka上。(相關細節(jié)可自行debug FeignClientFactoryBean.getTarget())

總結一下關鍵點:

@FeignClient 注解需要指定其 url 屬性(值不重要)!

接口方法定義增加 URI類型的參數(shù)!

接口方法定義SpringMVC的注解

使用@Autowired 注入代理對象可直接調用

end

————————————————

版權聲明:本文為CSDN博主「markix」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/qq_31772441/article/details/102531862

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多