使用feign调用的时候出现Could not autowire. No beans of ‘Api2UserFegin‘ type found报错

文章描述了一次在SpringBoot项目中遇到的报错,作者怀疑是Api2UserFegin服务未被Spring管理,但发现接口不应被@Autowired。问题出在启动类缺少扫描配置,添加@EnableFeignClients注解并指定基础包后,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错如下:

 这是我的目录结构:

 当时第一点就怀疑是Api2UserFegin服务没有成功交给Spring管理,但后面想到这是个接口,Autowired的时候不应该需要注释的,因此就想到是不是路径有问题,可以看到启动类也是没有问题的,然后后面去看了一眼启动类.....好家伙是忘记加扫描了,所以没扫描到fegin包。真是低级错误啊,加上@EnableFeignClients(basePackages = {"com.cloud.photo.api.feign"})后就没有问题了

 

### Feign 调用报错 `org.springframework.web.servlet.resource.NoResourceFoundException` 解决方案 当遇到 `NoResourceFoundException` 报错时,通常意味着客户端请求了一个不存在的资源路径。此问题可能由多种因素引起,包括但不限于 URL 错误、服务端未正确部署静态资源或配置不当。 #### 1. 检查 API 接口定义 确保 Feign 客户端接口中声明的方法签名与服务器端提供的 RESTful API 匹配。特别是对于 GET 请求,应确认返回类型是否为响应实体而非视图名称[^3]: ```java @FeignClient(name = "example-service", url = "${feign.client.config.example.url}") public interface ExampleServiceApi { @GetMapping("/api/resource/{id}") ResponseEntity<Resource> getResourceById(@PathVariable("id") Long id); } ``` #### 2. 验证服务提供者地址 仔细核对 Feign 客户端配置的服务提供者的URL地址是否准确无误。任何拼写上的失误都可能导致找不到对应的资源位置[^2]。 #### 3. 确认静态资源配置 如果应用程序涉及访问静态文件(如图片、CSS 文件),则需保证这些资源已被正确放置于项目结构内的适当目录下,并且 Web 应用程序能够识别并处理此类请求。对于 Spring Boot 应用,默认情况下会自动扫描 classpath 下的 `/static`, `/public`, `/resources` 和根路径下的同名文件夹作为公共资源存储区[^1]。 #### 4. 使用自定义错误处理器 为了更好地捕获和解析来自远程服务的具体错误信息,可以在 Feign 中设置全局级别的异常解码器。这有助于区分不同类型的 HTTP 响应状态码及其关联的消息体内容,从而更精准地定位问题所在: ```java @Bean public ErrorDecoder errorDecoder() { return new DefaultErrorDecoder(); } // 或者实现更加详细的逻辑 class CustomErrorDecoder implements ErrorDecoder { private final ErrorDecoder defaultErrorDecoder = new Default(); public Exception decode(String methodKey, Response response) { // 自定义处理逻辑... return this.defaultErrorDecoder.decode(methodKey, response); } } ``` 通过以上措施,应该可以有效减少甚至消除因 `NoResourceFoundException` 引起的应用程序运行时错误。当然,在具体实施过程中还需要结合实际情况灵活调整解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkoneone11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值