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

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

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

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

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);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝应县| 澎湖县| 沧源| 蒙阴县| 汝州市| 田林县| 韶山市| 新巴尔虎右旗| 尤溪县| 轮台县| 平陆县| 云南省| 鹰潭市| 平罗县| 陵水| 敦化市| 保靖县| 广宗县| 玉龙| 贡嘎县| 尼玛县| 大化| 宿松县| 文化| 昌宁县| 泗水县| 泸西县| 汉阴县| 长乐市| 平南县| 葵青区| 和静县| 南雄市| 石渠县| 大关县| 南平市| 平果县| 白朗县| 青阳县| 筠连县| 红安县|