@Autowired报错Could not autowire. No beans of ‘XXX‘ type found

这篇具有很好参考价值的文章主要介绍了@Autowired报错Could not autowire. No beans of ‘XXX‘ type found。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、背景:

  IDEA中使用@Autowired报错Could not autowire. No beans of 'XXX' type found,错误大致意思为:没有匹配到类型为XXX的bean。

@Autowired报错Could not autowire. No beans of ‘XXX‘ type found,SpringBoot,MyBatis,mybatis,spring,java


二、原因:

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


三、解决方法:

  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的原因以及解决办法
  • 欢迎大家提出建议以及批评,有任何问题可以私信

到了这里,关于@Autowired报错Could not autowire. No beans of ‘XXX‘ type found的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法

    idea具有检测功能,接口不能直接创建bean的,需要用动态代理技术来解决。 1.修改idea的配置 1.点击file,选择setting 2.搜索inspections,找到Spring 3.找到Spring子目录下的Springcore 4.在Springcore的子目录下找到code 5.把seyerity选项改成警告 2.修改代码 1,@Autowrited改为@Autowrited(required = false)

    2024年02月05日
    浏览(63)
  • IDEA提示找不到Mapper接口:Could not autowire.No beans of ‘xxxMapper‘ type found

    我们可以看到,上面的红色警告在提示我们,找不到 xxxMaper 这个类型的 bean。 为啥呢? 因为 @Mapper 这个注解是 Mybatis 提供的,而 @Autowried 注解是 Spring 提供的,IDEA能理解 Spring 的上下文,但是却和 Mybatis 关联不上。而且我们可以根据 @Autowried 源码看到,默认情况下,@Autowri

    2024年02月08日
    浏览(41)
  • A component required a bean of type ‘XXX‘ that could not be found 解决办法

    问题如图: 字面意思很容易就能看出,该问题是由于SpringBoot 在启动时,bean扫描失败,从而导致加载失败。 可以从如下几个方面排查: 检查问题类上是否标注了SpringBoot可以自动扫描的注解,比如缺失了@Service、@Component、@Mapper等,如果是这个原因,直接添加上响应的注解就可

    2023年04月24日
    浏览(40)
  • Springboot启动出现A component required a bean of type ‘com.xxx‘ that could not问题解决

    今日写一个websocket小demo,启动项目时出现错误如下图 检查也没发现漏写注解,思考片刻后突然想起springboot扫描的范围是与启动类同级别的包-就是com.huang.demo.ssm目录下所有注解bean都被扫描,那么ws包里面的bean不在ssm这个路径下,所以导致springboot启动时扫描不到。最后把ws包

    2024年02月11日
    浏览(50)
  • Java No qualifying bean of type * available:expected at least * bean which qualifies as autowire问题解决

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type \\\'com.xudongbase.user.dubbo.service.userDubboService\\\' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 1、使用@AllArgsContructor注解进行自动装配时,默认是以@Autowired注解装配的,但是其中有一

    2024年02月07日
    浏览(32)
  • 解决报错:No converter for [xxx] with preset Content-Type ‘null‘和Could not find acceptable representation

    报错如下:    从表面上看:似乎是因为没有序列号转换工具converter的原因,但是springboot实际已经自带jackson序列号转换工具(在spring-boot-starter-web/spring-boot-starter-json包下)。  所以明显不是这个原因。那么真正的原因是什么? 实际上,报这个异常跟序列化的原理有关,不论

    2024年02月11日
    浏览(44)
  • A component required a bean of type ‘...Mapper‘ that could not be found问题解决

    错误如图 第一步 查看配置文件是否正确 第二步 查看标签是否正确 检查UserMapper上是否加上@Mapper 补充 第二步还是不行的话查看下POM文件是否导入mybatis-plus-boot-starter 配置mybatis-plus.mapper-locations无提示信息; 此时发现右上角出现感叹号,Cannot resolve configuration property ‘mybatis-

    2024年02月16日
    浏览(39)
  • 解决启动报错Consider defining a bean of type ‘xxx‘ in your configuration.

    报错截图 解决方法:查看注解是否同时存在@AllArgsConstructor/@RequiredArgsConstructor和@Value,如果同时存在,去掉构造函数注解。给bean加上@Autowired,,给非static修饰的常量去掉final修饰。 如:

    2024年02月06日
    浏览(51)
  • 运行springboot出现“A component required a bean of type...that could not be found“问题

    问题 报错信息如下: 大致的意思是:没有找到对应的mapper,需要在你的配置中添加一个mapper类型的bean 解决方法 试了各种方法,后来突然想到,有没有可能是springboot版本的问题,于是打开pom.xml文件,找到parent标签,果然发现默认使用的是3.0.6版本,如下: 但是我之前使用的是

    2024年02月16日
    浏览(47)
  • 解决报错:@org.springframework.beans.factory.annotation.Autowired(required=true)

    先把问题贴出来: @org.springframework.beans.factory.annotation.Autowired(required=true) 报这个错是因为: @Autowired(required=true):当使用@Autowired注解的时候,其实默认就是@Autowired(required=true),表示注入的时候,该bean必须存在,否则就会注入失败。 ** ** 解决办法:

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包