服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 基于spring cloud多个消费端重复定义feign client的问题

基于spring cloud多个消费端重复定义feign client的问题

2022-02-24 00:38旋转的梦 Java教程

这篇文章主要介绍了spring cloud多个消费端重复定义feign client的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springcloud多个消费端重复定义feign client

spring cloud消费端调用服务提供者,有两种方式rest+ribbon和Feign,Feign是一个声明式的伪Http客户端更为简单易用,所以我们项目选用Feign作为服务通讯方式

项目有6个模块,A,B,C,D,E,F,模块之前必不可少的会存在相互调用的情况

问题来了。通过FeignClient的方式调用服务端,需要在消费端建立对服务端的调用的FeignClient接口

  • 假如A和B都需要调用C。
  • A调用C需要在A模块中建立一个C的FeignClient接口
  • B调用C也需要在B模块建立一个C的FeignClient接口
  • 如果D、E、F都需要用到C模块,那么还需要建立3个FeignClient。而这些FeignClient里面的代码都是一样的。

既然这样那FeignClient接口能不能定义为一个通用的接口呢。

作者尝试将FeignClient单独建立了一个模块G,将对各个模块的FeignClient调用接口集中在模块G中管理,A,B,C,D,E,F模块互调时,只需要在pom中引入G模块即可。

想法很美好,现实很残酷,实验结果失败了。

引入模块G后,启动SpringBoot,控制报错。找不到bean。

消费端启动类Application加了扫描包注解@ComponentScan(basePackages={"com.chelizi.feign.intf"})

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

Description:

A component required a bean of type 'com.chelizi.feign.intf.system.SysSerialNumberController' that could not be found.


Action:

Consider defining a bean of type 'com.chelizi.feign.intf.system.SysSerialNumberController' in your configuration.

加了上面的@ComponentScan注解后,com.chelizi.feign.intf下的普通@Component或者@Service的JavaBean是可以被扫描到的,但是@FeignClient的类没法扫描到

在spring cloud+feignClient报错

在spring cloud+feignClient中出现Consider defining a bean of type ‘xxxx' in your configuration 错误

大部分主要原因是没有启用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/cocoat/p/7650917.html

延伸 · 阅读

精彩推荐