@FeignClient的使用和Spring Boot的版本适配方式

目录
  • @FeignClient使用和SpringBoot版本适配
    • SpringCloud与SpringBoot版本兼容性
    • 在pom文件中添加依赖
    • 然后再给大家说一下Feign的使用
  • SpringBoot“坑”之@FeignClient注解
    • 下面来描述一下我遇到的问题
    • 贴上图片,更容易明白

@FeignClient使用和Spring Boot版本适配

公司项目中需要调用微服务,公司使用的Spring Boot版本是1.5.X,而现在的都是用的2.X版本以上了。

在FeignClinet、Spring Cloud与Spring Boot的版本问题上跌跤了,现在在这里记录下来,希望对大家有用。

首先,先看一下官网给出的

Spring Cloud与Spring Boot版本兼容性

Spring Cloud Spring Boot
Hoxton 2.2.x, 2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

并且还有一个值得注意的地方是Spring Cloud对Feign的支持在Finchley版本以下是由spring-cloud-starter-feign包提供的,而之后就是由spring-cloud-starter-openfeign提供的。

根据我的情况,我的Spring Cloud版本选了Edgware(脑子里浮现出一串数字:7777777),并且feign的依赖应该使用spring-cloud-starter-feign。大家可以根据自己项目情况选择。

在pom文件中添加依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.RELEASE</version>
            <type>pom</type>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

然后再给大家说一下Feign的使用

@FeignClient(name = "feignClient", url="xxxx")
public interface FeignClient {
    @PostMapping(value = "/query")
    String query(@RequestParam String token);
}
@EnableFeignClients(basePackages = {"xxx"}) // 别忘了在启动类上加上注解,xxx的值为FeignClient定义所在的包
@Autowired
FeignClient feignClient;
feignClient.query("xxxxxxxxx");

Spring Boot“坑”之@FeignClient注解

在项目开发中难免会遇到一些问题,这次小编又遇到了一个很恶心的问题,由于刚接触springboot架构,配置和使用上都还比较陌生。

下面来描述一下我遇到的问题

项目是分模块开发,后台做无状态,登录和权限控制在网关上做,所有服务都注册到服务中心上,由网关往下分发请求

小编在写网关接口的时候遇到了问题,网关接口和后台接口都写的没有问题,但是在整合后,网关无法转发到这个接口上。经过百度许久后无果。

小编开始进行排查,由于在网关里@FeignClient 注解的接口中所有的方法请求地址和网关中所请求的地址一样,然后做出个大胆的推测,是不是这个原因呢??

然后开始试验,将网关请求的路径稍作修改,和请求后台的路径不一致,然后,问题解决!!(到目前为止,不知道原因)

贴上图片,更容易明白

【错误页】

【网关转发接口】

【后台请求接口】

【网关请求接口】

原因是因为网关请求接口名称和后台请求接口名称一样

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

(0)

相关推荐

  • SpringCloud @FeignClient参数的用法解析

    目录 SpringCloud @FeignClient 参数详解 @FeignClient 注解常用参数 SpringCloud @FeignClient 参数详解 今天因为工作中遇到FeignClient一个奇葩的bug,后面仔细研究了,找出了原因,那么刚好对FeignClient 这个注解总结一下: 先看@FeignClient 源码:源码如下,本文最后面. 11个方法,常用方法说明如下 @FeignClient(name = "service-name", url = "

  • @FeignClient注入找不到异常如何解决

    前言 Springcloud中的服务间调用是通过Feign进行调用的,在调用方服务中,我们需要定义一些带有@FeignClient注解的接口类.并且在启动类上加上@EnableFeignClients注解. 程序启动的时候,会检查是否有@EnableFeignClients注解,如果有该注解,则开启包扫描,扫描带有@FeignClient注解的接口. 这里结合之前遇到的一个问题来和大家一起学习下@EnableFeignClients启动过程. 问题描述 之前搭建一个简单demo的时候,启动之后总

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

    目录 @FeignClient()注解的使用 @FeignClient标签的常用属性如下 SpringCloud 服务间互相调用 @FeignClient注解 我在FEIGN-CONSUMER 在FEIGN-CONSUMER 这是项目中的Controller层 @FeignClient()注解的使用 由于SpringCloud采用分布式微服务架构,难免在各个子模块下存在模块方法互相调用的情况.比如service-admin服务要调用service-card 服务的方法. @FeignClient

  • 通过Feign进行调用@FeignClient 找不到的解决方案

    目录 Feign进行调用@FeignClient找不到 通过Feign进行调用 Feign通过服务名调用服务,找不到服务 报错环境 报错时,注册中心的情况 报错情况 Feign进行调用@FeignClient 找不到 通过Feign 进行调用 这里配置spring-cloud 版本为 M8的  <properties>         <java.version>1.8</java.version>         <spring-cloud.version>

  • 解决@FeignClient注入service失败问题

    目录 @FeignClient注入service失败 Feign注入失败之坑 错误信息 加上之后,问题解决 @FeignClient注入service失败 在入口类上方加入注解 @EnableFeignClients(basePackages = {"com.ritoinfo.framework.evo.sp.sys.api","com.yqjr.sp.eco.member"}) 由于使用pom引入service jar包,如果不加basePackage,会找不到包

  • Spring Cloud 中@FeignClient注解中的contextId属性详解

    目录 @FeignClient注解中的contextId属性 解决方法一 解决方法二 FeignClient注解及参数问题 问题背景 解决办法 @FeignClient注解中的contextId属性 在使用@FeignClient注解前,我们需要先引入其相关依赖,版本为3.0.1 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter

  • @feignclient名字冲突的解决方案

    目录 @feignclient名字冲突 经过研究,解决方法如下 @FeignClient同一个name,多个配置类 解决方案 @feignclient名字冲突 在启动springcloud项目是遇到 Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true 这样一个异常 经过研究,解决方法如下 1.在配置文件中增加配置

  • @FeignClient的使用和Spring Boot的版本适配方式

    目录 @FeignClient使用和SpringBoot版本适配 SpringCloud与SpringBoot版本兼容性 在pom文件中添加依赖 然后再给大家说一下Feign的使用 SpringBoot“坑”之@FeignClient注解 下面来描述一下我遇到的问题 贴上图片,更容易明白 @FeignClient使用和Spring Boot版本适配 公司项目中需要调用微服务,公司使用的Spring Boot版本是1.5.X,而现在的都是用的2.X版本以上了. 在FeignClinet.Sprin

  • Spring Boot 静态资源处理方式

    Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通过配置进行修改. 如果想要自己完全控制WebMVC,就需要在@Configuration注解的配置类上增加@EnableWebMvc(@SpringBootApplication 注解的程序入口类已经包含@Configuration),增加该注解以后WebMvcAutoConfiguration中配

  • 关于spring boot整合kafka+注解方式

    目录 spring boot自动配置方式整合 spring boot自动配置的不足 spring boot下手动配置kafka 批量消费消息 spring boot整合kafka报错 spring boot自动配置方式整合 spring boot具有许多自动化配置,对于kafka的自动化配置当然也包含在内,基于spring boot自动配置方式整合kafka,需要做以下步骤. 引入kafka的pom依赖包 <!-- https://mvnrepository.com/artifact/org.s

  • Spring Security全新版本使用方式

    目录 基本使用 升级版本 旧用法 新用法 高级使用 基于方法的动态权限 基于路径的动态权限 效果测试 总结 参考资料 项目源码地址 前不久Spring Boot 2.7.0 刚刚发布,Spring Security 也升级到了5.7.1 .升级后发现,原来一直在用的Spring Security配置方法,居然已经被弃用了.不禁感慨技术更新真快,用着用着就被弃用了!今天带大家体验下Spring Security的最新用法,看看是不是够优雅! SpringBoot实战电商项目mall(50k+sta

  • Spring Boot常见外部配置文件方式详析

    日常开发和发布我们经常将 SpringBoot 的配置文件application.properties (或 application.yaml)直接放在项目目录下然后打包进 jar 包. 但是在很多时候, 我们可能因为 CI 需要或者安全管理需要集中管理配置文件, 这就涉及到外部配置文件的问题. 根据 SpringBoot 官方文档, 外部配置文件一般可以放到这4个地方: /config /config 也就是: java 命令当前运行目录下的 config 目录; java 命令当前运行目录;

  • 详解spring boot 以jar的方式启动常用shell脚本

    用spring boot框架做的项目,将第三方包全部打在jar里面,通过shell脚本启动和停止服务,常用的shell脚本模板如下: #!/bin/bash JAVA_OPTIONS_INITIAL=-Xms128M JAVA_OPTIONS_MAX=-Xmx512M _JAR_KEYWORDS=monitor-alarm-task-1.0-SNAPSHOT.jar APP_NAME=monitor-alarm-task APPLICATION_FILE=/opt/scpip_monitor/a

  • 详解Spring Boot Mysql 版本驱动连接池方案选择

    国内环境下,用Mysql还是比较多的.这里简单的总结了一下,如有缪误,还请指正. Mysql.connect 引入mysql-connector-java包,协议为GPL2.0,该协议具有传染性,即:一旦使用(调用)GPL的库,你的软件将被感染为GPL的软件(主程序).完全不具有商业友好特性.如果有顾虑,可以使用mariadb-java-client进行替代,见mariadb-connector-j,路径是org.mariadb.jdbc.Driver 引入JDBC驱动程序 <dependenc

  • spring boot过滤器FilterRegistrationBean实现方式

    有2种方式可以实现过滤器 1:通过FilterRegistrationBean实例注册 2:通过@WebFilter注解生效 这里选择第一种,因为第二种不能设置过滤器之间的优先级 为了演示优先级,这里创建2个测试过滤器类:Test1Filter.Test2Filter 通过实现javax.servlet.Filter接口,覆盖其doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)方法,决定拦截或放行 publi

  • Spring Boot如何优化内嵌的Tomcat示例详解

    前言 本文主要给大家介绍了关于Spring Boot优化内嵌Tomcat的相关内容,分享出来供大家参考学习,下面话不多说了,来一看看详细的介绍吧. Spring Boot测试版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE&l

  • 详解spring Boot Cli的配置和使用

    SpringBootCLI是一个命令行工具,可用于快速搭建基于spring的原型.它支持运行Groovy脚本,这也就意味着你可以使用类似Java的语法,但不用写很多的模板代码. Spring Boot不一定非要配合CLI使用,但它绝对是Spring应用取得进展的最快方式( 你咋不飞上天呢?) . 首先要下载分发包,下载地址如下 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started

随机推荐