问题描述

笔者作为一个新晋的后台开发,最近开发新项目,开发过程没有发现任何问题。不过在一处建立新module的地方,发现运行时错误,错误信息如下:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-02-24 17:17:02.745 ERROR [customer-api-group,,,] 245872 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The bean 'screen.FeignClientSpecification' could not be registered. A bean with that name has already been defined and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true


Process finished with exit code 1

这个错误出现得很突然,首先并不是编译时错误,证明引用的包并没有太大的问题。从笔者的经验看,运行时错误要么是传参不正确,要么是运行时配置不正确。

然而之前建的module并没有错误,难道是因为使用了新版本的spring-boot的原因?查询了下相关资料的得知:

FeignClient升级到2.1.0版本,需要添加contextId属性。

果然,之前开发的@FeignClient并没有加入contextId属性,而是使用了默认的contextId属性。

解决的办法:

  • 在所有2.1.0+版本的@FeignClient标签添加contextId属性。
  • 在配置文件中配置上:spring.main.allow-bean-definition-overriding=true。

完毕。