Q - springboot 升级到 2.1.1 - bean override 问题

263 阅读1分钟

今天遇到个问题,简单记录一下

问题描述

应用启动报错,如下:

fail

回到代码中,发现有两个 FeignClient 的 name 是相同的。

问题分析

从问题描述来看,bean 的名字冲突了,但是之前并没有出现这种情况,现在为什么突然出现了呢?看代码记录,是有同事升级了 springboot 版本到 2.1 release 版本,那去看看相关改动是不是和这个有关系。

很棒!看到官方升级说明,一眼就解开了困惑。

Spring Boot 2.1 Release Notes

官方文档说明:2.1 release 版本,默认情况下已禁用 bean 重写,以防止 bean 被意外重写。并给出了解决办法。如果你还想支持 bean 的重写,那么需要添加相关配置。

解决办法

  1. 修改配置,允许 bean 的重写:spring.main.allow-bean-definition-overriding = true
  2. 修改作为 bean 的名称的 FeignClient 的属性 name ,使得各个 FeignClient 的 name 不同即可。

Reference:

  1. Openfeign-issues
  2. Spring Boot 2.1 Release Notes