今天在启动项目的时候,idea控制台突然打印了The bean 'user.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.这样的错误,项目启动失败。我一脸懵逼,昨天启动的时候还好好的,怎么突然就启动不了了。百度后才发现,项目配置文件bootstrap.yml中的spring.main.allow-bean-definition-overriding=true配置不见了造成的。于是重新加上这个配置后,项目启动成功。
但是到底发生了什么事情,为什么需要加上这个配置,它到达有什么用,不加不行吗。带着这样的疑惑,我决定从网上找找答案。
须知
在Spring Boot 2.0.x 中,spring.main.allow-bean-definition-overriding属性默认是 true;
注解@FeignClient 没有contextId属性;
在Spring Boot 2.1.x 中,spring.main.allow-bean-definition-overriding属性默认是 false;
注解@FeignClient 有contextId属性;
Spring Boot 2.1.x 已经通过增加contextId属性来避免了bean重复定义的问题,记得给contextId赋值啊。
下面以Spring Boot 2.1.x版本来说明:
spring.main.allow-bean-defini