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

SpringBoot工程下使用OpenFeign的坑及解決

 更新時(shí)間:2021年07月02日 14:26:19   作者:小林June  
這篇文章主要介紹了SpringBoot工程下使用OpenFeign的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、前言

在SpringBoot工程(注意不是SpringCloud)下使OpenFeign的大坑。為什么不用SpringCloud中的Feign呢?

首先我的項(xiàng)目比較簡(jiǎn)單(目前只有l(wèi)ogin與業(yè)務(wù)模塊)所以暫時(shí)不去引入分布式的架構(gòu),但兩個(gè)服務(wù)之間存在一些聯(lián)系因此需要接口調(diào)用接口(實(shí)現(xiàn)該操作方式很多我選擇了OpenFeign,踩坑之路從此開始。。。)。

二、具體的坑

使用OpenFeign我是直接參考官方的demo,官方的例子寫的簡(jiǎn)潔明了直接套用到自己的工程中即可,自己也可以做相應(yīng)的封裝再調(diào)用但demo中使用到了一個(gè)feign的核心注解@RequestLine,問題就是出在該注解上。

此時(shí)你去做調(diào)試如果使用的是GET請(qǐng)求,被請(qǐng)求的接口則會(huì)收到POST的請(qǐng)求然后A接口(請(qǐng)求方)就報(bào)500的錯(cuò)誤,B接口(被請(qǐng)求方)則提示接口不支持POST請(qǐng)求(不支持POST請(qǐng)求是非常正常的,因?yàn)锽接口定義的method是GET方法)。

以下是我的代碼片段:

自定義UserFeign接口

public interface UserFeign { 
    /**
     * 根據(jù)userId獲取用戶信息
     * @param userId
     * @return
     */
    @RequestLine("GET /user/getUserById?id={id}")
    Result getUserById(@Param("id") String userId);
}

調(diào)用UserFeign接口

@Service
public class UserService{ 
    /**
     * 通過OpenFegin實(shí)現(xiàn)接口調(diào)用接口
      * @param userId
     * @return
     */
    public Result getUserByIdWith(String userId) {
        UserFeign userInfo = Feign.builder()
                .decoder(new JacksonDecoder())
                .target(UserFeign.class, "http://localhost:8080");
        Result res = userInfo.getUserById(userId);
        return res;
    }
}

A接口 (請(qǐng)求方)

@RequestMapping(value = "/test", method = RequestMethod.GET)
public Result test() {
    String id = "ad545461300a";
    return userService.getUserByIdWith(id);
}

B接口 (被請(qǐng)求方)

@RequestMapping(value = "/getUserById", method = RequestMethod.GET)
public Result getUserByUserId(@RequestParam(required = true) String id){
    if ("".equals(id)) {
        throw new BusinessException(400, "userId不能為空!");
    }
    Users info = usersService.getUserById(id);
    if (info == null) {
        throw new BusinessException(404, "userId有誤!");
    }
    return ResultUntil.success(info);
}

以上代碼我做了一些小調(diào)整,將調(diào)用UesrFeign接口中的方法封裝在UserService中并且使用了@service這樣我就可以在其它地方直接注入U(xiǎn)serService然后調(diào)用其中方法。

你會(huì)覺得以上代碼跟官網(wǎng)的demo沒啥區(qū)別但官方文檔中并沒有說明使用@RequestLine注解需要進(jìn)行配置(事實(shí)上需要進(jìn)行配置的)。

配置代碼如下:

@Bean
public Contract useFeignAnnotations() {
    return new Contract.Default();
}

完成以上的配置就可以進(jìn)行正常的調(diào)用了,該問題困擾我好幾天了今天終于解決了(真不容易),希望該文章沒有白寫。

最后感謝這篇文章讓我在放棄的時(shí)候找到了思路。(調(diào)試中遇到的細(xì)節(jié)問題就不在此進(jìn)行贅述了)

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

相關(guān)文章

  • 解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題

    解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題

    這篇文章主要介紹了解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot之Java配置的實(shí)現(xiàn)

    SpringBoot之Java配置的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot之Java配置的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • Mybatis在insert插入操作后如何返回主鍵id問題

    Mybatis在insert插入操作后如何返回主鍵id問題

    這篇文章主要介紹了Mybatis在insert插入操作后如何返回主鍵id問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • PrintStream和PrintWriter的區(qū)別簡(jiǎn)介

    PrintStream和PrintWriter的區(qū)別簡(jiǎn)介

    這篇文章主要介紹了PrintStream和PrintWriter的區(qū)別簡(jiǎn)介,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Java框架Quartz中的Trigger簡(jiǎn)析

    Java框架Quartz中的Trigger簡(jiǎn)析

    這篇文章主要介紹了Java框架Quartz中的Trigger簡(jiǎn)析,所有類型的trigger都有TriggerKey這個(gè)屬性,表示trigger的身份;除此之外,trigger還有很多其它的公共屬性,這些屬性,在構(gòu)建trigger的時(shí)候可以通過TriggerBuilder設(shè)置,需要的朋友可以參考下
    2023-11-11
  • EL表達(dá)式的隱式對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    EL表達(dá)式的隱式對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了EL表達(dá)式的隱式對(duì)象,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 簡(jiǎn)單易懂Java反射的setAccessible()方法

    簡(jiǎn)單易懂Java反射的setAccessible()方法

    本文主要介紹了簡(jiǎn)單易懂Java反射的setAccessible()方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • java發(fā)送javax.mail郵件實(shí)例講解

    java發(fā)送javax.mail郵件實(shí)例講解

    這篇文章主要為大家介紹了java發(fā)送javax.mail郵件實(shí)例講解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 淺談Java自定義注解相關(guān)知識(shí)

    淺談Java自定義注解相關(guān)知識(shí)

    今天帶大家來學(xué)習(xí)Java注解的相關(guān)知識(shí),文中對(duì)自定義注解作了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java用戶登錄驗(yàn)證代碼

    Java用戶登錄驗(yàn)證代碼

    本文給大家使用java代碼實(shí)現(xiàn)用戶登錄驗(yàn)證功能,當(dāng)用戶輸入三次錯(cuò)誤后,用戶不可以再次登錄的。具體實(shí)現(xiàn)代碼,大家可以參考下本教程
    2016-08-08

最新評(píng)論