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
相关推荐
Wang153014 小时前
Java编程基础与面向对象核心概念
java
毕设源码-郭学长14 小时前
【开题答辩全过程】以 康复管理系统为例,包含答辩的问题和答案
java
毅炼14 小时前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
winfreedoms14 小时前
java-网络编程——黑马程序员学习笔记
java·网络·学习
开开心心就好14 小时前
键盘改键工具免安装,自定义键位屏蔽误触
java·网络·windows·随机森林·计算机外设·电脑·excel
IManiy14 小时前
总结之Temporal全局速率控制(二)第三方速率控制服务设计
java
OpenMiniServer14 小时前
电气化能源革命下的社会
java·人工智能·能源
独自破碎E14 小时前
LCR_019_验证回文串II
java·开发语言
坚持就完事了14 小时前
Java中的一些关键字
java·开发语言
寄存器漫游者15 小时前
数据结构 C语言 顺序栈
java·c语言·数据结构