目录
错误信息
SearchApplication启动时报错无法启动,如下提示:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-10-26 09:25:20.459 ERROR 17868 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :***************************
APPLICATION FAILED TO START
***************************Description:
The bean 'itemservice.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
解决方法
方法一:在Search-service的application.yml配置文件中增加,重启服务。
spring:
main:
allow-bean-definition-overriding: true
方法二:为每个Client手动指定不同的contextId,如contextId = "brandFeignClient"
@FeignClient(name = "item-service",contextId = "brandFeignClient")
public interface BrandClient extends BrandApi {
}
原因分析
在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属性;