解决Springboot中Feignclient调用时版本问题

网友投稿 803 2022-10-26

解决Springboot中Feignclient调用时版本问题

解决Springboot中Feignclient调用时版本问题

目录大的背景就是错误如下这是Springboot版本不一致导致的问题解决办vgnKChMCzJ法如下

现有Springboot项目三个,分别为jpmc-adapter, gsdic-api, twpre-api。gsdic-api, twpre-api是公共的服务,对外提供Restful的API,通过feign client去调用。

大的背景就是

jpmc-adapter现在需要调用另外两个公共的服务。

Springboot版本:

jpmc-adapter           1.5.9gsdic-api                   1vgnKChMCzJ.5.9twpre-api                  2.0.5

可以看到jpmc-adaper和gsdic-api的Springboot版本是一致的。如果jpmc-adaper通过feign client单单调用 gsdic-api,一切都OK!

现在的情况是:jpmc-adaper既需要调用 gsdic-api,又需要调用twpre-api,然后启动项目的时候就报错了

错误如下

这是Springboot版本不一致导致的问题

先看jpmc-adaper中是如何去调用另外两个服务的。

大致如下:

1. build.gradle中引入另外两个公共服务的jar包。

2. gradle.properties中统一管理依赖版本号,如下:

3. 启动类中引入公共服务的配置:

4. 测试类中调用如下:

其中,twpre-api的FeignClient是来自org.springframework.cloud.openfeign.FeignClient;如下:

而gsdic-api的FeignClient是来自org.springframework.cloud-flix.feign.FeignClient, 如下:

解决办法如下

你可以把所以服务的版本换成一致,这样就能避免此类问题。但是换版本可能会导致很多问题,这里可以通过如下方式解决:

因为jpmc-adapter和gsdic-api的版本是一致的,那么我们在调用方即jpmc-adapter中重写twpre-api的FeignClient。

package com.geoswift.jpmc.api;

import org.springframework.cloud-flix.feign.FeignClient;

import com.geoswift.twpre.fapi.TwpreRestAPI;

@FeignClient(name="twpre", path="/api/twpre/v1")

public interface MyTwpreRestAPI extends TwpreRestAPI {

}

然后在测试的时候使用我们重写后的客户端就行了,如下:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Airtest- 跨平台的 UI 自动化测试框架
下一篇:一个框架可以自动生成OnSaveInstanceState代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~