当前位置: 代码网 > it编程>编程语言>Java > feign name指定服务调用无效问题及解决

feign name指定服务调用无效问题及解决

2024年11月12日 Java 我要评论
背景在做三方的外接接口的时候,出现了非常奇怪的一个问题。某个feign调用,必须使用 url 指定路径才能做到访问,因为明明使用name属性就可以指定服务了。这就非常奇怪了~~~~@feignclie

背景

在做三方的外接接口的时候,出现了非常奇怪的一个问题。

某个feign调用,必须使用 url 指定路径才能做到访问,因为明明使用name属性就可以指定服务了。

这就非常奇怪了~~~~

@feignclient(name = "outerservice", url = "${third.url}",configuration = feignconfig.class, fallbackfactory = outerservicefallbackfactory.class)
// @feignclient(value = "outerservice",configuration = feignconfig.class, fallbackfactory = outerservicefallbackfactory.class, decode404 = true)
@service
public interface outerserviceclientfeign extends bafoocommonapi {

}

涨知识了

声明接口时在代码中通过@resource注入容器之后即可使用。

@feignclient注解的常用属性如下:

  • value/name:value和name的作用一样,用于指定feignclient的名称;如果没有配置url,而且项目使用了eureka 、nacos或者ribbon,name属性会作为微服务的名称,用于服务发现。反之,只是一个名称。此属性和 spring.application.name 对应。
  • url:一般用于调试,作用是指定@feignclient调用的api地址,而非从服务中心获取。
  • urlname都可以使用占位符,比如:@feignclient(name = “your.feign.name",url="${your.feign.url}”);
  • decode404:当发生http 404错误时,如果该字段为true,会调用decoder进行解码;否则,抛出feignexception。
  • configuration:feign配置类,作用是自定义feign的encoder、decoder、loglevel、contract。
  • fallback:定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@feignclient标记的接口。
  • fallbackfactory:工厂类,用于生成fallback类实例,实现每个接口通用的容错逻辑,减少重复的代码。
  • path:定义当前feignclient的统一前缀。
  • contextid:为某个接口设置单独的超时,与与config里的属性对应。

原因

三方服务的配置文件里面加上了,前缀路径

 servlet:
    context-path: /outer

这就导致,feign调用时,拼接的路径少了 一个前缀 /outer

解决办法

使用 path属性,指定前缀。

@feignclient(value = "outerservice",path = "/outer",configuration = feignconfig.class, fallbackfactory = outerservicefallbackfactory.class, decode404 = true)

总结

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com