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

 更新时间:2022年03月01日 08:38:02   作者:Lieforlove  
这篇文章主要介绍了解决Springboot中Feign client调用时版本问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

大的背景就是

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

Springboot版本:

  • jpmc-adapter           1.5.9
  • gsdic-api                   1.5.9
  • twpre-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.netflix.feign.FeignClient, 如下:

解决办法如下

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

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

package com.geoswift.jpmc.api; 
import org.springframework.cloud.netflix.feign.FeignClient; 
import com.geoswift.twpre.fapi.TwpreRestAPI; 
@FeignClient(name="twpre", path="/api/twpre/v1")
public interface MyTwpreRestAPI extends TwpreRestAPI {	
}

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java详细讲解IO流的Writer与Reader操作

    Java详细讲解IO流的Writer与Reader操作

    Writer与Reader类不能直接调用,需要使用多带的方法调用它们的子类,在他们的前边加上一个File即可如(FileWriter或FileReader)的多态方法进行其调用,并且他们也是抽象类调用需要连接接口Exception,它们的优点在于可以直接写入或读出内容,不需要使用byte转八进制
    2022-05-05
  • 使用spring oauth2框架获取当前登录用户信息的实现代码

    使用spring oauth2框架获取当前登录用户信息的实现代码

    这篇文章主要介绍了使用spring oauth2框架获取当前登录用户信息的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • springboot 整合 sa-token简介及入门教程

    springboot 整合 sa-token简介及入门教程

    Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题,这篇文章主要介绍了springboot 整合 sa-token简介及入门教程,需要的朋友可以参考下
    2023-05-05
  • Java多线程通信实现方式详解

    Java多线程通信实现方式详解

    这篇文章主要介绍了Java多线程通信实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Idea打不了断点如何解决

    Idea打不了断点如何解决

    这篇文章主要介绍了Idea打不了断点如何解决的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java连接SQL Server数据库的超详细教程

    Java连接SQL Server数据库的超详细教程

    在Java应用程序中我们经常需要与数据库进行交互,一种常见的数据库是Microsoft SQL Server,下面这篇文章主要给大家介绍了关于Java连接SQL Server数据库的超详细教程,需要的朋友可以参考下
    2024-01-01
  • SpringBoot之导入静态资源详解

    SpringBoot之导入静态资源详解

    今天带大家学习SpringBoot导入静态资源的过程,文中介绍的非常详细,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • springboot框架的全局异常处理方案详解

    springboot框架的全局异常处理方案详解

    这篇文章主要介绍了springboot框架的全局异常处理方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • JAVA发送HTTP请求的多种方式详细总结

    JAVA发送HTTP请求的多种方式详细总结

    目前做项目中有一个需求是这样的,需要通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断,下面这篇文章主要给大家介绍了关于JAVA发送HTTP请求的多种方式总结的相关资料,需要的朋友可以参考下
    2023-01-01
  • 聊聊SpringBoot使用Nacos进行服务注册发现与配置管理问题

    聊聊SpringBoot使用Nacos进行服务注册发现与配置管理问题

    Nacos支持基于DNS和基于RPC的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。本文重点给大家介绍SpringBoot使用Nacos进行服务注册发现与配置管理,感兴趣的朋友一起看看吧
    2022-01-01

最新评论