乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spring Cloud OpenFeign 動態(tài)Url

       竹林湘館 2021-05-15

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

      原文鏈接:

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



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

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

      OpenFeign github地址、文檔

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

      近期需要通過http調(diào)用一個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請求,相關(guān)分享在 跳轉(zhuǎn)鏈接。 具體實現(xiàn)就是在接口方法加上 URI參數(shù),該URI參數(shù)會動態(tài)替換掉原有的url。

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

      示例

      maven依賴

      客戶端代碼

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

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

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

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

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

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

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

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

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

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

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

      接口方法定義SpringMVC的注解

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

      end

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

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多