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。
相关推荐
阿良别做梦2 分钟前
LangGraph 学习之路:让工作流返工,也让它及时停下
后端·开源
我的div丢了肿么办2 分钟前
go语言抽离路由文件以及对路由进行分组
后端·go
杨运交2 分钟前
082-缓存模块-基于 Redis Lua 脚本实现分布式锁与原子操作实战
spring boot
zz在掘金337083 分钟前
Django __init__.py 高级应用速记
后端
软件工程师文艺6664 分钟前
Teamcenter FMS 文件管理系统深度解析:缓存策略、SSL 部署与性能调优
后端
Gopher_HBo4 分钟前
类型系统 —— Type、rtype 与运行时类型元数据
后端
今天早睡4 分钟前
并发分支、同步汇总与 State 合并
后端·架构
王川7084 分钟前
商协会后台前端的模块聚合实践
前端·后端
旋律4146 分钟前
String、StringBuilder、StringBuffer:三个"字符串",到底区别在哪?
java·后端
小卿噢8 分钟前
94% 的集群在空等——数据倾斜实测
后端