The bean 'screen.FeignClientSpecification' could not be registered. 的解决办法
问题描述
笔者作为一个新晋的后台开发,最近开发新项目,开发过程没有发现任何问题。不过在一处建立新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。
完毕。