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

SpringCloud之@FeignClient()注解的使用方式

 更新時(shí)間:2021年09月25日 10:32:31   作者:Zero .  
這篇文章主要介紹了SpringCloud之@FeignClient()注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@FeignClient()注解的使用

由于SpringCloud采用分布式微服務(wù)架構(gòu),難免在各個(gè)子模塊下存在模塊方法互相調(diào)用的情況。比如service-admin服務(wù)要調(diào)用service-card 服務(wù)的方法。

  • @FeignClient()注解就是為了解決這個(gè)問題的。
  • @FeignClient()注解的源碼要求它必須在Interface接口上使用。( FeignClient注解被@Target(ElementType.TYPE)修飾,表示FeignClient注解的作用目標(biāo)在接口上)

@RequestLine與其它請(qǐng)求不同,只需要簡(jiǎn)單寫請(qǐng)求方式和路徑就能達(dá)到請(qǐng)求其它服務(wù)的目的。

@FeignClient(value = "feign-server",configuration = FeignConfig.class)  //需要一個(gè)配置文件
public interface TestService {
    @RequestLine("POST /feign/test")    //對(duì)應(yīng)請(qǐng)求方式和路徑
    String feign(@RequestBody UserDO userDO);
}
@EnableFeignClients
@SpringBootConfiguration
public class FeignConfig {
    @Bean
    public Contract contract(){
        return new feign.Contract.Default();
    }
}

@FeignClient標(biāo)簽的常用屬性如下

  • value: 服務(wù)名
  • name: 指定FeignClient的名稱,如果項(xiàng)目使用了Ribbon,name屬性會(huì)作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)
  • url: url一般用于調(diào)試,可以手動(dòng)指定@FeignClient調(diào)用的地址
  • decode404:當(dāng)發(fā)生http 404錯(cuò)誤時(shí),如果該字段位true,會(huì)調(diào)用decoder進(jìn)行解碼,否則拋出FeignException
  • configuration: Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract
  • fallback: 定義容錯(cuò)的處理類,當(dāng)調(diào)用遠(yuǎn)程接口失敗或超時(shí)時(shí),會(huì)調(diào)用對(duì)應(yīng)接口的容錯(cuò)邏輯,fallback指定的類必須實(shí)現(xiàn)@FeignClient標(biāo)記的接口
  • fallbackFactory: 工廠類,用于生成fallback類示例,通過這個(gè)屬性我們可以實(shí)現(xiàn)每個(gè)接口通用的容錯(cuò)邏輯,減少重復(fù)的代碼
  • path: 定義當(dāng)前FeignClient的統(tǒng)一前綴

此外還要求服務(wù)的啟動(dòng)類要有@EnableFeignClients 注解才能使Fegin生效。

SpringCloud 服務(wù)間互相調(diào)用 @FeignClient注解

SpringCloud搭建各種微服務(wù)之后,服務(wù)間通常存在相互調(diào)用的需求,SpringCloud提供了@FeignClient 注解非常優(yōu)雅的解決了這個(gè)問題

首先,保證幾個(gè)服務(wù)都在一個(gè)Eureka中注冊(cè)成功形成服務(wù)場(chǎng)。

如下,我一共有三個(gè)服務(wù)注冊(cè)在服務(wù)場(chǎng)中。COMPUTE-SERVICE ; FEIGN-CONSUMER ; TEST-DEMO;

我在FEIGN-CONSUMER

服務(wù)中調(diào)用其他兩個(gè)服務(wù)的兩個(gè)接口

分別為get帶參和post不帶參兩個(gè)接口如下這個(gè)是COMPUTE-SERVICE中的get帶參方法

@RequestMapping(value = "/add" ,method = RequestMethod.GET)
public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
    ServiceInstance instance = client.getLocalServiceInstance();
    Integer r = a + b;
    logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
    return r;
}

如果要在FEIGN-CONSUMER 服務(wù)中調(diào)用這個(gè)方法的話,需要在 FEIGN-CONSUMER 中新建一個(gè)接口類專門調(diào)用某一工程中的系列接口

 @FeignClient("compute-service")
 public interface ComputeClient { 
     @RequestMapping(method = RequestMethod.GET, value = "/add")
     Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b); 
 }

其中,@FeignClient注解中標(biāo)識(shí)出準(zhǔn)備調(diào)用的是當(dāng)前服務(wù)場(chǎng)中的哪個(gè)服務(wù),這個(gè)服務(wù)名在目標(biāo)服務(wù)中的配置中取

spring.application.name

接下來,在@RequestMapping中設(shè)置目標(biāo)接口的接口類型、接口地址等屬性。然后在下面定義接口參數(shù)以及返回參數(shù)

在FEIGN-CONSUMER

Controller層調(diào)用方法的時(shí)候

將上面接口注入進(jìn)來,就可以直接用了

 @Autowired
 ComputeClient computeClient;
 
 @RequestMapping(value = "/add", method = RequestMethod.GET)
 public Integer add() {
     return computeClient.add(10, 20);
 }

當(dāng)然,post方法同理:

這是目標(biāo)接口:

 @RestController
 @RequestMapping("/demo")
 @EnableAutoConfiguration
 public class HelloController {
    @RequestMapping(value = "/test",method = RequestMethod.POST)
    String test1(){
       return "hello,test1()";
    }
 }

這是在本項(xiàng)目定義的接口文件:

 @FeignClient("test-Demo")
 public interface TestDemo {
     @RequestMapping(method = RequestMethod.POST, value = "/demo/test")
     String test();
 }

這是項(xiàng)目中的Controller層

 @RestController
 public class ConsumerController {
     @Autowired
     TestDemo testDemo;
 
     @Autowired
     ComputeClient computeClient;
 
     @RequestMapping(value = "/add", method = RequestMethod.GET)
     public Integer add() {
         return computeClient.add(10, 20);
     }
 
     @RequestMapping(value = "/test", method = RequestMethod.GET)
     public String test() {
         return testDemo.test();
     }
 }

最終調(diào)用結(jié)果如下:

OK 服務(wù)間接口調(diào)用就是這樣了!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java選擇排序和垃圾回收機(jī)制詳情

    Java選擇排序和垃圾回收機(jī)制詳情

    這篇文章主要介紹Java選擇排序和垃圾回收機(jī)制,創(chuàng)建對(duì)象就會(huì)占據(jù)內(nèi)存,如果程序在執(zhí)行過程中不能再使用某個(gè)對(duì)象,這個(gè)對(duì)象是徒耗內(nèi)存的垃圾,下面來看看文章具體內(nèi)容吧
    2021-10-10
  • java TreeMap源碼解析詳解

    java TreeMap源碼解析詳解

    這篇文章主要介紹了java TreeMap源碼解析詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java GZIP壓縮與解壓縮代碼實(shí)例

    Java GZIP壓縮與解壓縮代碼實(shí)例

    這篇文章主要介紹了Java GZIP壓縮與解壓縮代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java數(shù)組基礎(chǔ)詳解

    java數(shù)組基礎(chǔ)詳解

    這篇文章主要介紹了Java數(shù)組基礎(chǔ)詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot集成EasyPoi實(shí)現(xiàn)Excel模板導(dǎo)出成PDF文件

    SpringBoot集成EasyPoi實(shí)現(xiàn)Excel模板導(dǎo)出成PDF文件

    在日常工作中,我們經(jīng)常需要將數(shù)據(jù)導(dǎo)出成Excel表格或PDF文件,本文將介紹如何在SpringBoot項(xiàng)目中集成EasyPoi和iText庫(kù),從而實(shí)現(xiàn)Excel模板導(dǎo)出成PDF文件的功能,希望對(duì)大家有所幫助
    2025-07-07
  • Java持久層框架MyBatis簡(jiǎn)單實(shí)例

    Java持久層框架MyBatis簡(jiǎn)單實(shí)例

    MyBatis 本是apache的一個(gè)開源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。本文重點(diǎn)給大家介紹Java持久層框架MyBatis簡(jiǎn)單實(shí)例,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-07-07
  • IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file bytecode version:52.0(java 8)錯(cuò)誤的解決辦法

    IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file byt

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file bytecode version:52.0(java 8)錯(cuò)誤的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java后綴數(shù)組之求sa數(shù)組的實(shí)例代碼

    Java后綴數(shù)組之求sa數(shù)組的實(shí)例代碼

    后綴數(shù)組就是一個(gè)字符串所有后綴大小排序后的一個(gè)集合,然后我們根據(jù)后綴數(shù)組的一些性質(zhì)就可以實(shí)現(xiàn)各種需求。這篇文章主要介紹了Java后綴數(shù)組-求sa數(shù)組,需要的朋友可以參考下
    2018-04-04
  • Java中將base64編碼字符串轉(zhuǎn)換為圖片的代碼

    Java中將base64編碼字符串轉(zhuǎn)換為圖片的代碼

    這篇文章主要介紹了Java中將base64編碼字符串轉(zhuǎn)換為圖片,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java利用EasyExcel解析動(dòng)態(tài)表頭及導(dǎo)出實(shí)現(xiàn)過程

    Java利用EasyExcel解析動(dòng)態(tài)表頭及導(dǎo)出實(shí)現(xiàn)過程

    以前做導(dǎo)出功能,表頭和數(shù)據(jù)都是固定的,下面這篇文章主要給大家介紹了關(guān)于Java利用EasyExcel解析動(dòng)態(tài)表頭及導(dǎo)出實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評(píng)論