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

@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文件中添加依赖


    
        
            org.springframework.cloud
            spring-cloud-dependencies
            Edgware.RELEASE
            pom
            runtime
        
    

    org.springframework.cloud
    spring-cloud-starter-feign
    1.4.7.RELEASE

然后再给大家说一下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 注解的接口中所有的方法请求地址和网关中所请求的地址一样,然后做出个大胆的推测,是不是这个原因呢??

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

贴上图片,更容易明白

【错误页】

@FeignClient的使用和Spring Boot的版本适配方式_第1张图片

【网关转发接口】

@FeignClient的使用和Spring Boot的版本适配方式_第2张图片

【后台请求接口】

@FeignClient的使用和Spring Boot的版本适配方式_第3张图片

【网关请求接口】

@FeignClient的使用和Spring Boot的版本适配方式_第4张图片

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

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

你可能感兴趣的:(@FeignClient的使用和Spring Boot的版本适配方式)