No qualifying bean of type或Unsatisfied dependency expressed through field ‘XXXService‘或@Autowired 注入

简介: No qualifying bean of type或Unsatisfied dependency expressed through field ‘XXXService‘或@Autowired 注入

这种类似的bean报错基本都是因为bean使用自动注入的时候没有成功注入,可以解决的方法有

1.对象没有被加载到容器

首先要看要加载的类上有没有对应的注解@Controller、@Service、@Mapper、@Repository、 @Component(一些工具类等可以加)、@Configuration

@Mapper和@Repository区别

  • @Mapper和@Repository都是用在dao层接口的上的注解
  • @Mapper可以单独加在dao层接口类上,使得该类直接加载。如果有多个mapper需要加载则可以启动类上配置@MapperScan
  • @Repository单独使用没有用,只是给该mapper接口作为标识,想要被加载到需要用@MapperScannerConfigurer扫描

2.对象没有被扫描到

如果对应的对象已经加上了对应的注解,但还是报错,则可能是因为启动类上没有加上@MapperScan或者@ComponentScan导致因此导致对象没有被扫描到,无法加载到容器中。没有加上的话在启动类加上即可

@MapperScan和@ComponentScan区别

  • 两个Scan不能同时使用,否则mapper会扫描不到,如果非要同时使用则需要@MapperScan(basePackages = {})使@MapperScan只扫描mapper包
  • @MapperScan只扫描Mapper接口的类
  • 而@ComponentScan会扫描@Controller、@Service、@Repository、@Component类等类装配到spring容器中

本次博主出错就是因为两个项目之间要调用service类但只使用了@MapperScan,因此无法进行加载,改成@ComponentScan即可,而@ComponentScan的话扫描的包记得范围需要大一点否则也会报错

3.注意包的层级

如果是测试类上进行测试的时候,要注意测试类的包层级和原先java包下的层级要对应上

4.对象不是由spring加载,而是new来创建

需要注入的对象通常是只需要声明而不需要创建,创建的工作是交给spring的IOC容器来操作,一般加上了static等的操作可能就是已经创建了

5.一个项目里有多个子项目,且每个子项目都有启动类的

注意:通常相同层级的子项目的启动类上扫描只能有一个@ComponentScan在扫描,有两个会发生冲突

 

相关文章
|
Java 数据库连接 mybatis
【Spring常见错误】No qualifying bean of type
📋📋 精彩摘要:MyBatis 核心配置文件(xxxConfig.xml),该文件配置了MyBatis的一些全局信息,,包含数据库连接信息和MyBatis运行时所需的各种特性,以及设置和响应MyBatis行为的一些属性。本文将深入浅出的介绍MyBatis核心配置文件中常用的标签配置。
6477 0
|
存储 JSON 数据格式
Pandas处理JSON文件to_json()一文详解+实例代码
Pandas处理JSON文件to_json()一文详解+实例代码
2206 0
Pandas处理JSON文件to_json()一文详解+实例代码
|
XML 数据格式
解决Unsatisfied dependency expressed through field ‘jdbcTemplate‘;问题~
解决Unsatisfied dependency expressed through field ‘jdbcTemplate‘;问题~
732 0
|
Java Spring
No qualifying bean of type 'XXXXX' available
该文档描述了Spring框架中`org.springframework.beans.factory.NoSuchBeanDefinitionException`异常的处理方法,该异常是因为无法找到类型为`com.weblog.auth.mapper.UserMapper`的bean导致。解决办法包括在对应的Mapper上添加`@Mapper`注解,并在启动类上添加`@MapperScan`注解以扫描包含Mapper接口的文件夹。
855 8
|
9月前
|
Java 对象存储 开发者
如何找出Java进程占用CPU高的元凶
本文记录了一次Java进程CPU占用率过高的问题和排查思路。
|
11月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
2435 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
Java
SpringBoot注入出现@org.springframework.beans.factory.annotation.Autowired(required=true)
SpringBoot注入出现@org.springframework.beans.factory.annotation.Autowired(required=true)
403 0
|
Java 数据库连接 mybatis
成功解决:文档根元素 “mapper“ 必须匹配 DOCTYPE 根 “null“
这篇文章介绍了解决MyBatis配置文件中出现的"文档根元素'mapper'必须匹配DOCTYPE根'null'"错误的步骤,通过添加正确的文件头和DOCTYPE声明到mapper.xml文件中来解决这个问题。
成功解决:文档根元素 “mapper“ 必须匹配 DOCTYPE 根 “null“
|
应用服务中间件 nginx
nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
【8月更文挑战第27天】nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
852 6
|
XML Java 关系型数据库
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了