解决@Autowired报错Could not autowire. No beans of ‘XXX‘ type found问题

 更新时间:2024年12月13日 14:31:39   作者:小呆呆^  
介绍了在IDEA中使用@Autowired报错Couldnot autowire. No beans of 'XXX' type found的解决方法,原因是@Autowired在注入service时,由于service接口没有实现类,而mybatis仅需提供Dao接口,导致@Autowired无法识别

背景

IDEA中使用@Autowired报错

Could not autowire. No beans of 'XXX' type found.

错误大致意思为:

没有匹配到类型为XXX的bean。

原因

个人觉得,注入controllerservice虽然一般来说我们都是注入一个接口,但是该接口有实现类,并且使用@Service进行关联,所以注入类型应该也可以视为一个类,但是mybatis仅需提供Dao接口,也就是说,注入servicedao只是一个接口,而没有实现类,虽然mybatis能够通过Dao接口和xml文件实现与数据库的操作,但是@Autowired并没有这个识别功能,可能它就认为你类型不匹配,无法使用通过类型注入的方法。

解决方法

  1. 在相应mapper中加上@Component注解
  2. 检查service层有没有加入@service注解,若无则加上
  3. 使用@resource注解代替@Autowired注解
  4. @Autowired(required = false) 设置required 属性值为 false,错误提示消失。
  5. 在相应的dao层加入@Repository注解

@Autowired和@Resource的区别

  • @Resource和@Autowired注解都是用来实现依赖注入的。只是@AutoWriedby type自动注入,而@Resource默认按byName自动注入。
  • @AutoWried基于spring的注解org.springframework.beans.factory.annotation.Autowired,它默认是按类型进行的装配的。任何给定bean类只有一个构造函数(最大值)可以声明这个注释,并将'required'参数设置为true,表示构造函数在用作Spring bean时要自动装配。如果多个非必需构造函数声明了注释,则它们将被视为自动装配的候选者。将选择具有最大数量的依赖项的构造函数,这些构造函数可以通过匹配Spring容器中的bean来满足。如果不能满足任何候选者,则将使用主要/默认构造函数(如果存在)。如果一个类只声明一个构造函数开头,它将始终被使用,即使没有注释。带注释的构造函数不必是公共的。
  • @Resource是基于j2ee的注解(可以减少了与spring的耦合)(JDK1.6以上支持)默认是按名字进行注解。注释标记应用程序所需的资源。此注释可以应用于应用程序组件类,或者该组件类的字段或方法。如果将该注释应用于一个字段或方法,那么初始化应用程序组件时容器将把所请求资源的一个实例注入其中。如果将该注释应用于组件类,则该注释将声明一个应用程序在运行时将查找的资源。即使此注释没有被标记为 Inherited,部署工具仍然需要检查任意组件类的所有超类,以发现这些超类中所有使用此注释的地方。所有此类注释实例都指定了应用程序组件所需的资源。注意,此注释可能出现在超类的 private 字段和方法上;在这种情况下容器也需要执行注入操作。

总结

简单讲述了@Autowired报错Could not autowire. No beans of 'XXX' type found的原因以及解决办法

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • spring cloud 集成 ribbon负载均衡的实例代码

    spring cloud 集成 ribbon负载均衡的实例代码

    spring Cloud Ribbon 是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制。本文给大家介绍spring cloud 集成 ribbon负载均衡,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • Java 使用Calendar计算时间的示例代码

    Java 使用Calendar计算时间的示例代码

    这篇文章主要介绍了Java 使用Calendar计算时间的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Spring的拦截器HandlerInterceptor详解

    Spring的拦截器HandlerInterceptor详解

    这篇文章主要介绍了Spring的拦截器HandlerInterceptor详解,拦截器是相对于Spring中来说的,它和过滤器不一样,过滤器的范围更广一些是相对于Tomcat容器来说的,拦截器可以对用户进行拦截过滤处理,需要的朋友可以参考下
    2024-01-01
  • java环境配好后jar文件打开命令框闪退(无打开方式,无反应)解决办法

    java环境配好后jar文件打开命令框闪退(无打开方式,无反应)解决办法

    在Java开发中我们经常会遇到运行Jar包时闪退的问题,下面这篇文章主要给大家介绍了关于java环境配好后jar文件打开命令框闪退(无打开方式,无反应)的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • 解读SpringBoot接收List<Bean>参数问题(POST请求方式)

    解读SpringBoot接收List<Bean>参数问题(POST请求方式)

    这篇文章主要介绍了解读SpringBoot接收List<Bean>参数问题(POST请求方式),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 如何通过源码了解Java的自动装箱拆箱详解

    如何通过源码了解Java的自动装箱拆箱详解

    装箱就是把基本类型转换成包装类,拆箱就是把包装类转换成基本类型,下面这篇文章主要给大家介绍了关于如何通过源码了解Java的自动装箱拆箱的相关资料,需要的朋友可以参考下
    2022-04-04
  • idea多环境配置及问题解决方案

    idea多环境配置及问题解决方案

    这篇文章主要介绍了idea多环境配置及问题解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • java时区转换的理解及示例详解

    java时区转换的理解及示例详解

    这篇文章主要介绍了java时区转换的理解及示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • RocketMQ-延迟消息的处理流程介绍

    RocketMQ-延迟消息的处理流程介绍

    这篇文章主要介绍了RocketMQ-延迟消息的处理流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Spring事务处理Transactional,锁同步和并发线程

    Spring事务处理Transactional,锁同步和并发线程

    本文详细讲解了Spring事务处理Transactional,锁同步和并发线程。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12

最新评论