栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot项目启动 @FeignClient(name=“服务名称”)服务名称重复,启动异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot项目启动 @FeignClient(name=“服务名称”)服务名称重复,启动异常

背景描述:

同一个项目,远程调用同一个服务两个不同控制层的方法:

@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();
} 

此方法适用于远程接口调用比较少的情况

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号