最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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,踩坑之路從此開(kāi)始。。。)。

二、具體的坑

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

此時(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獲取用戶(hù)信息
     * @param userId
     * @return
     */
    @RequestLine("GET /user/getUserById?id={id}")
    Result getUserById(@Param("id") String userId);
}

調(diào)用UserFeign接口

@Service
public class UserService{ 
    /**
     * 通過(guò)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ì)覺(jué)得以上代碼跟官網(wǎng)的demo沒(méi)啥區(qū)別但官方文檔中并沒(méi)有說(shuō)明使用@RequestLine注解需要進(jìn)行配置(事實(shí)上需要進(jìn)行配置的)。

配置代碼如下:

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

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

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

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

相關(guān)文章

  • Java使用JNA調(diào)用DLL文件

    Java使用JNA調(diào)用DLL文件

    JNA(Java?Native?Access)是一個(gè)在?Java?中調(diào)用本地代碼的開(kāi)源框架,提供了一種簡(jiǎn)單、高效的方式來(lái)訪(fǎng)問(wèn)本地動(dòng)態(tài)鏈接庫(kù),下面我們來(lái)看看Java如何使用JNA調(diào)用DLL文件吧
    2024-12-12
  • Java使用正則表達(dá)式截取重復(fù)出現(xiàn)的XML字符串功能示例

    Java使用正則表達(dá)式截取重復(fù)出現(xiàn)的XML字符串功能示例

    這篇文章主要介紹了Java使用正則表達(dá)式截取重復(fù)出現(xiàn)的XML字符串功能,涉及java針對(duì)xml字符串及指定格式字符串的正則匹配相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Spring Boot快速實(shí)現(xiàn) IP地址解析的示例詳解

    Spring Boot快速實(shí)現(xiàn) IP地址解析的示例詳解

    這篇文章主要介紹了Spring Boot快速實(shí)現(xiàn)IP地址解析,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • RestTemplate 401 獲取錯(cuò)誤信息的處理方案

    RestTemplate 401 獲取錯(cuò)誤信息的處理方案

    這篇文章主要介紹了RestTemplate 401 獲取錯(cuò)誤信息的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中的BaseTypeHandler自定義類(lèi)型轉(zhuǎn)換器的使用

    Java中的BaseTypeHandler自定義類(lèi)型轉(zhuǎn)換器的使用

    這篇文章主要介紹了Java中的BaseTypeHandler自定義類(lèi)型轉(zhuǎn)換器的使用,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Java 如何使用JDBC連接數(shù)據(jù)庫(kù)

    Java 如何使用JDBC連接數(shù)據(jù)庫(kù)

    這篇文章主要介紹了Java 如何使用JDBC連接數(shù)據(jù)庫(kù),幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-02-02
  • 淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系

    淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系

    這篇文章主要介紹了淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot配置@Configuration注解和@bean注解

    SpringBoot配置@Configuration注解和@bean注解

    這篇文章主要介紹了SpringBoot配置@Configuration注解和@bean注解,文章圍繞主題相關(guān)內(nèi)容展開(kāi)詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 詳談java中boolean和Boolean的區(qū)別

    詳談java中boolean和Boolean的區(qū)別

    下面小編就為大家?guī)?lái)一篇詳談java中boolean和Boolean的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • hashset去除重復(fù)值原理實(shí)例解析

    hashset去除重復(fù)值原理實(shí)例解析

    這篇文章主要介紹了hashset去除重復(fù)值原理實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12

最新評(píng)論

桐庐县| 台前县| 濮阳县| 庆元县| 万盛区| 琼结县| 安岳县| 连平县| 大悟县| 柘城县| 桦川县| 松江区| 海兴县| 临漳县| 定边县| 股票| 交城县| 银川市| 麻江县| 北流市| 固始县| 深泽县| 香格里拉县| 健康| 乌鲁木齐市| 安塞县| 青神县| 宣城市| 额尔古纳市| 西华县| 达尔| 衡东县| 宝坻区| 桐柏县| 乃东县| 石景山区| 章丘市| 克拉玛依市| 桃源县| 福泉市| 安塞县|