Spring Boot 自动注入失败的原因

问题

shell 复制代码
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.sveinn.chatbotdomain.zsxq.service.ZsxqApi' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}

解决过程

看到这个错误我们第一时间想到的就是应该是没有在service加注解(@Controller、@Service、@Repository、 @Component 中的其中一个)。但是呢我看了一下我的service是加了注解的。所以呢我们可以排除这种可能。

还有一个可能出现问题的就是启动类的位置错误,SpringBoot应用启动时,默认会自动扫描与启动类在同个包以及子包下的Bean。

检查了一下自己的启动类路径,发现了报错的原因是项目中启动类的位置错了。

从我的项目路径我们可以知道,项目中启动类所在的路径是com.sveinn.chatbotinterfaces,service所在的路径为com.sveinn.chatbotdomain.zsxq.service。启动类不在要找的这个类的上层或者是平级,因此启动类找不到service所以会报这个错误。

总结

自动注入失败的两种可能:NoSuchBeanDefinitionException: No qualifying bean of type 'com.aaa.xxx'available: expected at least 1 bean which qualifies as autowire candidate. available出现的原因可能有两种。

  • 没有加注解(@Controller、@Service、@Repository、 @Component 中的其中一个)。
  • Application类 (启动类)的路径错误,SpringBoot应用启动时,默认会自动扫描与启动类在同个包以及子包下的Bean
相关推荐
Mr_pyx7 分钟前
RAG知识库从零到一:简单搭建教程(java版)
java·spring·ai·rag
敲代码的瓦龙9 分钟前
Android?碎片!!!
java·开发语言·android-studio
月落归舟12 分钟前
深入解析Spring依赖注入 DI 的三种方式
java·后端·spring
geovindu14 分钟前
go:Condition Variable Pattern
开发语言·后端·设计模式·golang·条件变量模式
亚马逊云开发者19 分钟前
Lambda 冷启动改善了,你的 Provisioned Concurrency 可能白花钱了
java
无风听海23 分钟前
UseForwardedHeaders 与 UsePathBase:深入理解 ASP.NET Core 代理感知中间件
后端·中间件·asp.net
C雨后彩虹24 分钟前
猴子爬山问题
java·数据结构·算法·华为·面试
天真吴邪xie26 分钟前
Claude Code安装
java·git
小新同学^O^32 分钟前
简单学习 --> Spring统一处理
java·学习·spring·统一功能处理
程序猿乐锅33 分钟前
【Tilas|第七篇】学员管理实现
java·笔记·idea·tlias