日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba - 13 OpenFeign应用篇

發布時間:2025/3/21 javascript 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Alibaba - 13 OpenFeign应用篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • What's Feign
  • ( Ribbon+RestTemplate) Vs Feign
  • Feign整合
    • artisan-feign-api 子模塊構建
      • Step1 搞依賴
      • Step2 修改打包方式
      • Step3 編寫聲明式接口
    • 調用工程 artisan-cloud-feign-order 構建
      • Step1 搞依賴
      • Step2 搞注解
      • Step3 搞調用 (像調用本地方式一樣調用遠程服務)
    • 服務提供方artisan-cloud-feign-product 構建
  • 測試
  • 源碼


What’s Feign

Feign是Netflix開發的聲明式、模板化的HTTP客戶端,其靈感來自Retrofit、JAXRS-2.0以及WebSocket。

Feign可幫助我們更加便捷、優雅地調用HTTP API.

在Spring Cloud中,使用Feign非常簡單——只需創建接口,并在接口上添加注解即可。

Feign支持多種注解,例如Feign自帶的注解或者JAX-RS注解等。Spring Cloud對Feign進行了增強,使其支持SpringMVC注解.

另外還整合了Ribbon和Eureka,從而使得Feign的使用更加方便.


( Ribbon+RestTemplate) Vs Feign

前面的方式我們都是通過 Ribbon+RestTemplate 進行微服務調用 模式 , 那有什么弊端呢?

ResponseEntity<PayInfo> responseEntity = restTemplate.getForEntity(PAY_URI + orderInfo.getProductNo(), PayInfo.class);#Ribbon調用@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}

兩個缺點:

  • 如果構建的URL非常復雜,傳遞參數是個問題。

  • 同時當業務比較復雜,很難理解。


  • Feign整合

    artisan-feign-api 子模塊構建

    采取開發中常用的套路 定義一個artisan-feign-api工程 ,用于單獨管理和其他服務的接口。類似于DAO, COMMON這種模塊


    Step1 搞依賴

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

    Step2 修改打包方式

    <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId></plugin></plugins></build>

    該工程式一個普通的jar 不需要打可執行的jar


    Step3 編寫聲明式接口

    @FeignClient(name = "artisan-product-center") public interface ProductCenterFeignApi {/*** 聲明式接口,遠程調用http://artisan-product-center/selectProductInfoById/{productNo}* @param productNo* @return*/@RequestMapping("/selectProductInfoById/{productNo}")ProductInfo selectProductInfoById(@PathVariable("productNo") String productNo);}

    這個聲明式接口怎么寫呢? --------- 直接把Controller接口 Copy過來即可。

    調用工程 artisan-cloud-feign-order 構建

    Step1 搞依賴

    <dependency><groupId>com.artisan</groupId><artifactId>artisan-feign-api</artifactId><version>1.0-SNAPSHOT</version></dependency>

    引入剛才的子模塊,因為依賴是傳遞的,所以也相當于引用了feign ,這里僅引用子模塊即可。


    Step2 搞注解

    開啟注解加入 @EnableFeignClients

    Step3 搞調用 (像調用本地方式一樣調用遠程服務)

    服務提供方artisan-cloud-feign-product 構建

    同普通工程一樣,無需改造


    測試

    啟動兩個服務

    artisan-cloud-feign-order
    artisan-cloud-feign-product

    訪問Order服務提供的接口

    源碼

    https://github.com/yangshangwei/SpringCloudAlibabMaster

    總結

    以上是生活随笔為你收集整理的Spring Cloud Alibaba - 13 OpenFeign应用篇的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。