一、异常日志:
The bean 'xxxx.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
二、原因:
在同于一个微服务中多个feign接口使用@FeignClient注解调用同一个名称的微服务,启动时引发的异常
比如:项目中定义了两个feign接口类,但是注解都是@FeignClient(value = "userinfo-service")
为此报错了。
@FeignClient(value = "userinfo-service")
public interface DictionaryApi {
/**
* 字段查询接口
*
* @param requestDTO 请求类型
* @return 字典信息
*/
@PostMapping("/get-dictionary-list")
public ResponseDTO<List<xxx>> getDictionary(@RequestBody DictionaryRequestDTO requestDTO);
}
@FeignClient(value = "userinfo-service" )
public interface MyBaseInfoApi {
/**
* 根据企业id查询产品列表
*
* @param requestDTO 企业id
* @return 产品列表
*/
@PostMapping("/get-product-list-by-enterprise-id")
public ResponseDTO<List<xxxx>> getProductListByEnterpriseId(@RequestBody EnterpriseIdFindProductDTO requestDTO);
}
三、解决方案:
1、方案一:
将调用同一个服务的fegin接口都写到一个xxxApi接口类中。比如文章来源:https://www.toymoban.com/news/detail-685011.html
@FeignClient(value = "userinfo-service")
public interface UserfinApi {
/**
* 字段查询接口
*
* @param requestDTO 请求类型
* @return 字典信息
*/
@PostMapping("/get-dictionary-list")
public ResponseDTO<List<xxx>> getDictionary(@RequestBody DictionaryRequestDTO requestDTO);
/**
* 根据企业id查询产品列表
*
* @param requestDTO 企业id
* @return 产品列表
*/
@PostMapping("/get-product-list-by-enterprise-id")
public ResponseDTO<List<xxxx>> getProductListByEnterpriseId(@RequestBody EnterpriseIdFindProductDTO requestDTO);
}
2、方案二:
配置文件中添加配置:文章来源地址https://www.toymoban.com/news/detail-685011.html
spring:
main:
allow-bean-definition-overriding: true
到了这里,关于The bean ‘xxxx.FeignClientSpecification‘ could not be registered. A bean with that name has already的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!