欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Spring-Cloud2.0之Feign調(diào)用遠程服務指南

 更新時間:2019年01月31日 14:51:54   作者:Moshow鄭鍇  
這篇文章主要介紹了詳解Spring-Cloud2.0之Feign調(diào)用遠程服務指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Feign是什么

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

為什么使用Feign

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

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

一句話解釋Feign

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

配置文件

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

不然會報錯提示“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>

服務調(diào)用者

啟動器一定要加@EnableFeignClients,代表進行Feign調(diào)用,F(xiàn)eign會到Eureka拉取服務列表,供調(diào)用的。

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

調(diào)用方業(yè)務方面。推薦是寫一個interface類,把方法封裝起來供其他Controller調(diào)用。

這里要注意

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

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的被調(diào)用者的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}”

被調(diào)用者

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot整合Elasticsearch實現(xiàn)索引和文檔的操作方法

    SpringBoot整合Elasticsearch實現(xiàn)索引和文檔的操作方法

    Elasticsearch 基于 Apache Lucene 構(gòu)建,采用 Java 編寫,并使用 Lucene 構(gòu)建索引、提供搜索功能,本文分步驟通過綜合案例給大家分享SpringBoot整合Elasticsearch的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 詳解JDBC使用

    詳解JDBC使用

    JDBC(Java Database Connectivity),即Java數(shù)據(jù)庫連接,是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供同一訪問,它由一組用Java語言編寫的類和接口組成。
    2017-05-05
  • JAVA中的final關(guān)鍵字用法實例詳解

    JAVA中的final關(guān)鍵字用法實例詳解

    這篇文章主要介紹了JAVA中的final關(guān)鍵字用法,結(jié)合實例形式較為詳細的分析了Java中的final關(guān)鍵字用于修飾數(shù)據(jù),方法及類的具體使用技巧,需要的朋友可以參考下
    2015-12-12
  • springboot項目防止XSS攻擊和sql注入方式

    springboot項目防止XSS攻擊和sql注入方式

    這篇文章主要介紹了springboot項目防止XSS攻擊和sql注入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java.lang.IllegalStateException異常解決

    java.lang.IllegalStateException異常解決

    異常是程序在執(zhí)行過程中遇到的錯誤或異常情況,本文就來介紹一下java.lang.IllegalStateException異常解決,感興趣的可以了解一下
    2023-11-11
  • SpringCloud的Hystrix簡單介紹

    SpringCloud的Hystrix簡單介紹

    這篇文章主要介紹了SpringCloud的Hystrix簡單介紹,SpringCloud Hystrix是Netflix開源的一款容錯框架,具備服務降級,服務熔斷,依賴隔離,監(jiān)控(Hystrix Dashboard)等功能,同樣具有自我保護能力,需要的朋友可以參考下
    2023-07-07
  • Java字符編碼簡介_動力節(jié)點Java學院整理

    Java字符編碼簡介_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java字符編碼簡介,本文主要包括以下幾個方面:編碼基本知識,Java,系統(tǒng)軟件,url,工具軟件等,感興趣的朋友一起看看吧
    2017-08-08
  • IntelliJ IDEA打開多個Maven的module且相互調(diào)用代碼的方法

    IntelliJ IDEA打開多個Maven的module且相互調(diào)用代碼的方法

    這篇文章主要介紹了IntelliJ IDEA打開多個Maven的module且相互調(diào)用代碼的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Spring中Bean初始化和銷毀的方式總結(jié)

    Spring中Bean初始化和銷毀的方式總結(jié)

    這篇文章主要為大家整理了Spring中Bean初始化和銷毀的多種方式,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以了解一下
    2023-04-04
  • java如何更改數(shù)據(jù)庫中的數(shù)據(jù)

    java如何更改數(shù)據(jù)庫中的數(shù)據(jù)

    這篇文章主要介紹了java如何更改數(shù)據(jù)庫中的數(shù)據(jù),修改數(shù)據(jù)庫是數(shù)據(jù)庫操作必不可少的一部分,使用Statement接口中的excuteUpdate()方法可以修改數(shù)據(jù)表中的數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2021-11-11

最新評論