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

2. 原因
原因可能有两个,第一个是IntellijIDEA本身工具的问题。第二个便是我们导入@Service包的时候导入包错误造成的
第一种原因,spring auto scan配置,在编辑情况下,无法找不到对应的bean,于是提示找不到对应bean的错误。常见于mybatis的mapper,如下:

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

针对第二种原因,解决方案当然是导入正确的包。首先我们来看下最容易导入的错误包,如下所示:
import com.alibaba.dubbo.config.annotation.Service;
正确的包应该是下面这个
import org.springframework.stereotype.Service;
切记切记啊!!!!
针对第三种原因,换成@Resource就可以了,不知道为啥

spring中注解@Resource 与@Autowire 区别
@Resource与@Autowired的区别?
1.@Autowired按byType自动注入。
2.@Resource默认按byName自动注入。
但是@Resource有两个属性是比较重要的,分是name和type;
如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略;
3.@Autowired是spring自己定义的注解,@Resource是J2EE的,由JSR-250规范定义。
PS:个人建议用@Resource,不为什么,减少与spring的耦合。

本文介绍了在IntelliJ IDEA的Spring工程中遇到'Could not autowire. No beans of 'xxxx' type found'错误的原因及解决方法。错误可能是由于IDEA工具的问题或导入@Service包时的错误。解决方案包括调整@Autowired的错误级别为警告,以及确保正确导入@Service包(应为org.springframework.stereotype.Service)。此外,还讨论了@Resource和@Autowired的区别,并建议使用@Resource以减少与Spring的耦合。
4424

被折叠的 条评论
为什么被折叠?



