一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Spring Cloud OpenFeign 動(dòng)態(tài)Url

 竹林湘館 2021-05-15

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

原文鏈接:

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



劃重點(diǎn):文中提到的 Spring Cloud OpenFeign 和 OpenFeign 不是同一個(gè)東西?。?!

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

OpenFeign github地址、文檔

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

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

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

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

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

示例

maven依賴

客戶端代碼

逐個(gè)解析下相關(guān)細(xì)節(jié):

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

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

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

feign.Client.Default 僅是簡單的直接調(diào)用。

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

name 屬性是 @FeignClient 注解必要的!不定義時(shí)會(huì)報(bào)錯(cuò),其默認(rèn)指代Eureka上的服務(wù)名。

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

總結(jié)一下關(guān)鍵點(diǎn):

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

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

接口方法定義SpringMVC的注解

使用@Autowired 注入代理對(duì)象可直接調(diào)用

end

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

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产午夜福利一区二区| 久久亚洲精品成人国产| 亚洲日本久久国产精品久久| 欧美午夜性刺激在线观看| 99久热只有精品视频最新| 欧美黑人在线精品极品| 91人妻人人精品人人爽| 午夜精品一区免费视频| 国产精品美女午夜视频| 亚洲国产精品久久精品成人| 久热99中文字幕视频在线| 麻豆视传媒短视频在线看| 亚洲一区二区三区熟女少妇 | 精品人妻精品一区二区三区| 日本和亚洲的香蕉视频| 国产高清一区二区不卡| 亚洲一区二区三区三州| 大胆裸体写真一区二区| 99热九九热这里只有精品| 欧美国产日产综合精品| 日本深夜福利视频在线| 91熟女大屁股偷偷对白| 精品女同一区二区三区| 国产又粗又猛又长又大| 欧美午夜一区二区福利视频| 国产99久久精品果冻传媒| 欧美日本精品视频在线观看| 麻豆精品在线一区二区三区| 男女激情视频在线免费观看| 久久碰国产一区二区三区| 午夜午夜精品一区二区| 日韩中文字幕视频在线高清版 | 日韩精品视频香蕉视频| 色婷婷丁香激情五月天| 亚洲国产精品久久琪琪| 经典欧美熟女激情综合网| 日韩高清毛片免费观看| 亚洲精品国产主播一区| 国产又粗又猛又爽色噜噜| 久久这里只有精品中文字幕| 男女午夜视频在线观看免费|