国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

詳解Spring-Cloud2.0之Feign調用遠程服務指南

2024-07-09 22:40:54
字體:
來源:轉載
供稿:網友

Feign是什么

Feign是簡化Java HTTP客戶端開發的工具(java-to-httpclient-binder),它的靈感來自于Retrofit、JAXRS-2.0和WebSocket。Feign的初衷是降低統一綁定Denominator到HTTP API的復雜度,不區分是否為restful。

為什么使用Feign

開發人員使用Jersey和CXF等工具可以方便地編寫java client,從而提供REST或SOAP服務;開發人員也可以基于Apache HC等http傳輸工具包編寫自己的java http client;而Feign的關注點在于簡化開發人員使用工具包的復雜度,以最少的代碼編寫代碼從而提供java http客服端。通過定制解碼器和異常處理,開發人員可以任意編寫文本化的HTTP API。

好了,上面是官方的,假如要我說Feign是什么。

一句話解釋Feign

可以理解為Feign是一個超級方便的調用Spring-Cloud遠程服務的框架/工具,幫助開發者以更少耦合更少代碼更快更兼容的方法進行遠程服務調用。

配置文件

調用的時候,雙方的application.yml一定要加上兩個配置,因為雙方服務器是需要相互發現并獲取服務列表的。

不然會報錯提示“feign Load balancer does not have available server for client: xxxx”

eureka: client:  #是否將自己注冊到eureka服務注冊中心,默認為true  register-with-eureka: true  #是否從服務注冊中心獲取可用的服務清單,默認為true  fetch-registry: true  serviceUrl:   defaultZone: http://192.168.114.152:9091/eureka/

然后就是再pom.xml里面加上最新出爐的feign包

    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-feign -->    <dependency>      <groupId>org.springframework.cloud</groupId>      <artifactId>spring-cloud-starter-feign</artifactId>      <version>1.4.4.RELEASE</version>    </dependency>

服務調用者

啟動器一定要加@EnableFeignClients,代表進行Feign調用,Feign會到Eureka拉取服務列表,供調用的。

@EnableEurekaClient@SpringBootApplication@EnableFeignClientspublic class CheckCollectSysApplication {  public static void main(String[] args) {    SpringApplication.run(CheckCollectSysApplication.class,args);  }}

調用方業務方面。推薦是寫一個interface類,把方法封裝起來供其他Controller調用。

這里要注意

1. @FeignClient里面一定要指定是name,很久以前的版本指定的是serviceId,那個已經過時了。

2. 如果用到占位符,@PathVariable也需要指定value,這是一個強制要求,不然會報錯,提示“Feign PathVariable annotation was empty on param 0.”

3. RequestParam也需要指定value,不然會提示”RequestParam.value() was empty on parameter 1”

另外,別人說什么GetMapping啊PutMapping啊不行的,其實不會的,我試過都可以了

@FeignClient(name = "demo-checksys")public interface ChecysysRemoteClient {  /**   * 獲取基本信息   *(PutMapping的URL=遠程項目的Path+ControllerPath+MethodPath   * 簡單的說,就是你直接postman可以訪問的項目路徑)    */  @PutMapping("/checksys/register/info/{checkNum}")  public ApiReturnObject updateCheckRegisterByBodyCheck(@PathVariable(value="checkNum") String checkNum,@RequestParam(value="bodyJson") String bodyJson);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江阴市| 南部县| 定州市| 阿坝县| 织金县| 永登县| 江达县| 贵州省| 华阴市| 永清县| 普兰店市| 周至县| 延边| 阿拉善左旗| 本溪| 马龙县| 黄大仙区| 东丰县| 基隆市| 如东县| 大足县| 响水县| 武功县| 雷山县| 霸州市| 平昌县| 天峻县| 清水河县| 宁陕县| 海丰县| 黔江区| 逊克县| 望奎县| 平谷区| 乌鲁木齐县| 广东省| 石泉县| 赫章县| 德格县| 临邑县| 保亭|