做网站建设销售系统类小说
2026/4/18 4:26:22 网站建设 项目流程
做网站建设销售,系统类小说,关于手机的软文营销,we建站近期在启动项目时遇到了一个典型的报错#xff1a;The bean contract-management-service.FeignClientSpecification could not be registered. A bean with that name has already been defined and overriding is disabled.#xff0c;这个报错直接导致服务启动失败#x…近期在启动项目时遇到了一个典型的报错The bean contract-management-service.FeignClientSpecification could not be registered. A bean with that name has already been defined and overriding is disabled.这个报错直接导致服务启动失败排查后发现是FeignClient配置的常见疏漏本文将详细还原问题场景、分析根源并给出可直接落地的解决方案帮助快速定位和解决此类问题。核心内容展开场景复现含报错信息、环境配置环境配置Spring Boot版本2.6.8Spring Cloud版本2021.0.3Spring Cloud OpenFeign版本3.1.3问题现象项目启动时控制台抛出如下异常服务启动失败org.springframework.beans.factory.support.BeanDefinitionOverrideException: The bean contract-management-service.FeignClientSpecification could not be registered. A bean with that name has already been defined and overriding is disabled.查看项目中的FeignClient接口发现存在两个及以上使用相同name/value属性的FeignClient注解示例如下// 第一个FeignClient接口FeignClient(namecontract-management-service)publicinterfaceContractInfoFeignClient{GetMapping(/contract/info/{id})StringgetContractInfo(PathVariable(id)Longid);}// 第二个FeignClient接口FeignClient(namecontract-management-service)publicinterfaceContractAuditFeignClient{PostMapping(/contract/audit)BooleanauditContract(RequestBodyContractAuditDTOdto);}问题根源分析Feign在初始化时会为每个FeignClient注解生成对应的FeignClientSpecificationBean该Bean的名称默认由FeignClient的name/value属性拼接固定后缀生成格式为{name}.FeignClientSpecification。Spring容器中Bean的名称是唯一的当多个FeignClient使用相同的name/value且未做额外区分时会生成同名的FeignClientSpecificationBean。而Spring Boot 2.1版本默认禁用了Bean覆盖spring.main.allow-bean-definition-overridingfalse因此容器检测到同名Bean时会直接抛出注册异常导致服务启动失败。简单来说核心问题是相同name/value的FeignClient未指定contextId导致生成的FeignClientSpecification Bean名称重复且Bean覆盖机制禁用。解决方案步骤1指定唯一名称为每个使用相同name/value的FeignClient指定唯一的contextId属性Feign会基于contextId生成唯一的FeignClientSpecificationBean名称避免重复。步骤2修改FeignClient接口配置为每个重复name的FeignClient补充contextId属性示例如下// 第一个FeignClient接口指定contextId为contractInfoClientFeignClient(namecontract-management-service,contextIdcontractInfoClient)publicinterfaceContractInfoFeignClient{GetMapping(/contract/info/{id})StringgetContractInfo(PathVariable(id)Longid);}// 第二个FeignClient接口指定contextId为contractAuditClientFeignClient(namecontract-management-service,contextIdcontractAuditClient)publicinterfaceContractAuditFeignClient{PostMapping(/contract/audit)BooleanauditContract(RequestBodyContractAuditDTOdto);}验证结果修改完成后重新启动项目控制台不再抛出Bean名称重复的异常服务正常启动。通过访问FeignClient对应的接口验证远程调用功能正常无异常。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询