今天遇到个问题,简单记录一下
问题描述
应用启动报错,如下:
回到代码中,发现有两个 FeignClient 的 name 是相同的。
问题分析
从问题描述来看,bean 的名字冲突了,但是之前并没有出现这种情况,现在为什么突然出现了呢?看代码记录,是有同事升级了 springboot 版本到 2.1 release 版本,那去看看相关改动是不是和这个有关系。
很棒!看到官方升级说明,一眼就解开了困惑。
官方文档说明:2.1 release 版本,默认情况下已禁用 bean 重写,以防止 bean 被意外重写。并给出了解决办法。如果你还想支持 bean 的重写,那么需要添加相关配置。
解决办法
- 修改配置,允许 bean 的重写:
spring.main.allow-bean-definition-overriding = true - 修改作为 bean 的名称的 FeignClient 的属性 name ,使得各个 FeignClient 的 name 不同即可。
Reference: