一、背景
前段时间将某项目(使用 @FeignClient 注解)中的 spring-boot-starter-parent 版本由 2.1.3.RELEASE 升级到 2.3.5.RELEASE,启动的时候报如下错误:
The bean 'XXX.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already bean defined in null and overriding is disabled.
大概的意思是项目中有 2 个或者 2 个以上 @FeignClient 有相同的 value 或者 name,如下图:
二、解决方案
两个方案:
- 通过将 spring.application.main.allow-bean-definition-overriding 设置为 true,如下:
spring:
application:
name: annoroad-alpha
main:
# 默认是 false
allow-bean-definition-overriding: true
- 【推荐】设置不同的 contextId,如下图:
三、结论
- 老版本的 springboot 是支持 2 个或者 2 个以上 @FeignClient 有相同的 value 或者 name。
- 如果 spring-boot-starter-parent 的版本不能回退到老版本(2.1.3.RELEASE),个人推荐使用【方案2】来解决这个问题。