FeignClient注入错误,IDemoClient that could not be found.

问题描述:

项目引入openFeign ,调用FeignClient提示:

Field demoClient in com.demo2.controller.DemoController required a bean of type 'com.demo.feign.IDemoClient' that could not be found.

**The injection point has the following annotations:

  • @org.springframework.beans.factory.annotation.Autowired(required=true)**

问题的原因是两个报名的路径不一致;FeignClient接口包名和当前服务的包名不一致。

问题解决方案:

方案一:

指定@EnableFeignClients的扫描路径。

java 复制代码
//示例一
@EnableFeignClients("com.demo")


//示例二
@EnableFeignClients(basePackages ="com.demo")
方案二:
java 复制代码
@EnableFeignClients(clients = {IDemoClient.class})

启动就正常了。

@EnableFeignClients学习

是一个声明式的 Web 服务客户端,它使得编写 Web 服务客户端变得更加简单。

@EnableFeignClients 注解通常用于 Spring Boot 应用程序的启动类上,以启用 Feign 客户端的自动配置。当使用 @EnableFeignClients 注解时,Spring 会自动扫描并配置所有使用 @FeignClient 注解的接口。

@EnableFeignClients源码
java 复制代码
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients {


	String[] value() default {};


	String[] basePackages() default {};


	Class<?>[] basePackageClasses() default {};


	Class<?>[] defaultConfiguration() default {};


	Class<?>[] clients() default {};

}
@EnableFeignClients用属性
  1. basePackages : 指定Feign客户端接口所在的包路径。Spring Boot会自动扫描这些包中带有@FeignClient注解的接口。

    java 复制代码
    @EnableFeignClients(basePackages = "com.demo.client")
  2. basePackageClasses: 通过类来指定Feign客户端接口所在的包路径。这些类必须位于你想要扫描的包中。

    java 复制代码
    @EnableFeignClients(basePackageClasses = IDemoClient.class)
  3. clients: 一个类数组,指定Feign客户端接口的类。Spring Boot会扫描这些类并为它们创建代理对象。

    java 复制代码
    ​
    @EnableFeignClients(clients = { IDemoClient.class, IDemo2Client.class })
    
    ​
  4. defaultConfiguration: 指定Feign客户端的默认配置类。这个配置类可以提供Feign客户端的全局配置。

    java 复制代码
    @EnableFeignClients(defaultConfiguration = DemoFeignClientConfig.class)
复制代码
value : 指定要扫描的包路径,用于查找使用 @FeignClient 注解的接口。
java 复制代码
@EnableFeignClients("com.demo.client")



相关推荐
JAVA面经实录91714 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
周杰伦fans15 小时前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
许彰午16 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
Bat U17 小时前
JavaEE|多线程初阶(七)
java·开发语言
谭欣辰17 小时前
C++ 排列组合完整指南
开发语言·c++·算法
foundbug99918 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
XDH_CS18 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
小短腿的代码世界18 小时前
Qt实时盈亏计算深度解析:从持仓数据到动态盈亏展示
开发语言·qt
小康小小涵19 小时前
基于ESP32S3实现无人机RID模块底层源码编译
linux·开发语言·python