91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-08 21:56:42 來源:腳本之家 閱讀:155 作者:Moshow鄭鍇 欄目:編程語言

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
@EnableFeignClients
public 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);
}

這里的FeignClient的name是指注冊到Eureka的被調用者的ApplicationName,就是你應用的名字啦,application.yml里面可以進行配置

spring:
  application:
    name: demo-checksys

PutMapping的URL=遠程項目的Path+ControllerPath+MethodPath,簡單的說,就是你直接postman可以訪問的項目路徑。

例如項目是http://127.0.0.1:8080/demo/user/getUser/{userId},

那么這里寫的就是”/demo/user/getUser/{userId}”

被調用者

至于被調用者,一如既往的code,沒什么不同,畢竟是被別人調用,這種調用方式很安逸。

  /**
   * 獲取基本信息
   */
  @PutMapping("/info/{checkNum}")
  public ApiReturnObject updateCheckRegisterByBodyCheck(@PathVariable String checkNum,String bodyJson) {
    //這里可以打印一些日志
    outSystemService.updateCheckRegisterByBodyCheck(checkNum, bodyJson);
    return ApiReturnUtil.success("調用成功");
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿坝| 奈曼旗| 开远市| 射洪县| 化州市| 宜春市| 凉山| 大悟县| 高尔夫| 普宁市| 高邑县| 蓬安县| 永济市| 宁明县| 泸西县| 永丰县| 灵宝市| 饶平县| 洛阳市| 建始县| 永胜县| 毕节市| 应城市| 赤峰市| 航空| 牟定县| 安宁市| 新兴县| 长宁区| 千阳县| 三门县| 中超| 鹿邑县| 教育| 株洲市| 阳谷县| 如皋市| 临桂县| 勃利县| 衡水市| 天津市|