同一个项目,远程调用同一个服务两个不同控制层的方法:
@FeignClient(name = "demo-service", path = "/admin1")
public interface Interface1{
// 接口1
@GetMapping("/test1")
String test1();
}
@FeignClient(name = "demo-service", path = "/admin2")
public interface Interface2{
// 接口1
@GetMapping("/test1")
String test1();
}
异常描述:
demo-service 这个Bean已经存在,不能被注册。导致启动失败
Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
解决方式:
方法一:
allowBeanDefinitionOverriding默认为false, 可以在启动是手动设为true,如图:
方法二:
在application.yml文件添加如下配置,如图:
spring:
main:
allow-bean-definition-overriding: true # 意思是后来发现的bean会覆盖之前相同名称的bean
切记:不能在nacos配置中心的yaml文件配置,否则不生效
方法三:
将demo-service远程服务的所有方法整合成一个接口,如图:
@FeignClient(name = "demo-service")
public interface Interface1{
// 接口1
@GetMapping("/admin1/test1")
String test1();
// 接口2
@GetMapping("/admin2/test2")
String test2();
}
此方法适用于远程接口调用比较少的情况



