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
相关推荐
神奇小汤圆11 分钟前
面试官问:"你们上线前怎么测Agent系统?上线后怎么知道它好不好?"
后端
FfHUCisI12 分钟前
Golang - 信号量模式(Semaphore Pattern)
开发语言·后端·golang
神奇小汤圆21 分钟前
Redis 和 MySQL 如何保证数据一致性?先更新数据库还是先删缓存,延迟双删、MQ、Canal 一次讲透
后端
m0_5474866629 分钟前
《Java程序设计与实践 》全套PPT课件2026
java·开发语言
土司大王1 小时前
LeetCode hto100——字母异位词分组
java·算法·leetcode
犹豫的果冻布丁1 小时前
从零给 DeepSeek Harness 写一个壁纸皮肤插件(已开源)
前端·后端
weixin_431600441 小时前
NestJS 入门(10):日志——为什么常用 Winston?
后端·学习·日志·nest.js·winston
码匠许师傅1 小时前
【C++ 面试真题】聊聊 C++ 中的 lambda 表达式
java·c++·面试
QCodingDev2 小时前
Spring AI Alibaba ReAct Agent实战:从Tool Calling到Agent,企业AI复杂业务该如何设计?
java·人工智能·agent·ai编程·spring ai
步行cgn2 小时前
MyBatis <where> 标签详解:让你的动态 SQL 更优雅、更安全
后端