抽取feign公共模块

将feign的远程调用接口抽象到一个公共的模块中,实现feign接口的复用。

feign依赖添加

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

使用:

feign接口上需要加上以下注解..(value="service-search"为服务提供者)..(fallback为指定的服务降级方法类路径)降级类实现feign接口既可重写降级方法

@FeignClient(value="service-search",fallback=GoodsFeignClientFallback.class)
public interface xx {

    @GetMapping("/api")
    public Result<CategoryView> findByxxx(@PathVariable("SkuId") Long SkuId);

接口使用者:启动类加上此注解,指定feign接口所在的包.并且导入feign模块

@EnableFeignClients(basePackages= {
        "xxx.xxx.feign.search"
})

1.1、feign接口的包扫描路径单独指定

//启动类包扫描.
@EnableFeignClients(basePackages= {
        "xxx.xxx.feign.search"
            //数组可以指定多个包以,分隔
})

1.2、关于服务降级的类可以借助于spring boot的自动化配置原理

自动化配置原理:

resources资源目录下创建META-INF/spring.factories写入如下配置

org.springframework.boot.autoconfigure.EnableAutoConfiguration=
  com.xxx.xx.feign.search.fallbck.GoodsFeignClientFallback\,
  AAAA\,
  BBBB
 

1.3、多个feign接口使用@FeignClient注解调用同一个名称的微服务时,启动时会引发此异常(任选一个方法)

  • 方法一: 将feign接口合并

  • 方法二: 在配置文件中增加配置 spring.main.allow-bean-definition-overriding=true

  • 方法三: 在@FeignClient注解上增加contextId属性,确保每个feign client的contextId唯一。如@FeignClient(name = "服务名",

contextId="唯一名称")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值