IntelliJ Idea解决Could not autowire. No beans of ‘xxxx‘ type found的错误提示
创始人
2024-06-02 05:33:54

IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示

问题描述

  • 在Idea的spring工程里,经常会遇到Could not autowire. No beans of 'xxxx’ type found的错误提示。但程序的编译和运行都是没有问题的,这个错误提示并不会产生影响。但红色的错误提示在有些有强迫症的程序员眼里,多多少少有些不太舒服。

原因

  • 原因可能有两个,第一个是IntellijIDEA本身工具的问题。第二个便是我们导入@Service包的时候导入包错误造成的

  • 第一种原因,spring auto scan配置,在编辑情况下,无法找不到对应的bean,于是提示找不到对应bean的错误。常见于mybatis的mapper,如下: 

解决方案

  • 针对第一种原因,解决办法是:降低Autowired检测的级别,将Severity的级别由之前的error改成warning或其它可以忽略的级别。

  • 针对第二种原因,解决方案当然是导入正确的包。首先我们来看下最容易导入的错误包,如下所示:

  • import com.alibaba.dubbo.config.annotation.Service; 正确的包应该是下面这个 import org.springframework.stereotype.Service; 切记切记啊!!!! 针对第三种原因,换成@Resource就可以了,不知道为啥

  • @Resource与@Autowired的区别?

    • @Autowired按byType自动注入。@Resource默认按byName自动注入。

    • 但是@Resource有两个属性是比较重要的,分是name和type;如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略;

    • @Autowired是spring自己定义的注解,@Resource是J2EE的,由JSR-250规范定义。PS:个人建议用@Resource,不为什么,减少与spring的耦合。

相关内容

热门资讯

《一幅名扬中外的画》教学设计 ... 教学目标:1.知识目标掌握《清明上河图》的创作时间,作者及内容.2.能力目标提高阅读能力.3.情感目...
六一儿童节少先队员发言稿 六一... 六一儿童节少先队员发言稿尊敬的领导、老师,亲爱的同学们: 大家好!今天我们欢聚一堂,庆“六一”...
最新或2023(历届)安徽中澳... 安徽中澳科技职业学院(Anhui Zhong-Ao Institute of Technology)...
最新或2023(历届)安徽审计... 学院现拥有包河和方兴两个校区,校园总面积262350平方米;学院建筑面积94006平方米,其中学生宿...
最新或2023(历届)安徽大学... 安徽大学江淮学院是经教育部批准,由安徽大学主办,纳入第三批本科录取的全日制普通高等教育本科院校。学院...