前言
在使用Feign开发新的功能时,因为创建了新类增加了新的功能,吭哧吭哧的把程序写完了,满心欢喜的想测试一下,但启动时报错了。。。
一、问题代码
现有功能代码,如下
@FeignClient("backend-service")
public interface PaymentServiceFeign extends PaymentService {
@Override
@RequestMapping(method = RequestMethod.GET, value = "/api/payment/getPaymentById")
CommonResult<Payment> getPaymentById();
}
问题代码,如下
@FeignClient("backend-service")
public interface PaymenDownloadFeign extends PaymentService {
@Override
@RequestMapping(method = RequestMethod.GET, value = "/api/payment/downlaod")
void download();
}
启动报错,如下图示:
二、解决步骤
1.问题分析
其实通过上边的错误提示,我们知道它是因为服务名相同导致bean注册失败了,所以想要让程序启动起来,把服务名改成不一样的就可以了,但是服务名
是不能改的,改了后端就访问不了了,所以就需要改其他的属性。
2.处理流程
2.1 查询官网
大概意思就是,如果想要用相同的名字或者url创建多个feign客户端,并且指向同一服务器,需要用contextId
属性区分一下。
2.2 改后的代码
contextId
的值自定义就行
@FeignClient(value = "backend-service", contextId = "backend-service-1")
public interface PaymenDownloadFeign extends PaymentService {
@Override
@RequestMapping(method = RequestMethod.GET, value = "/api/payment/downlaod")
void download();
}