idea中Mapper接口通过@Autowired注入,报错
一、问题
在使用mybatis-plus进行开发时,dao层(BookDao接口)使用@Mapper注解,spring将动态的生成Bean后注入到Servicelmpl中。
但是在Test测试类中使用@Autowired自动注入出现报错:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class BookDaoTestCase {
@Autowired
private BookDao bookDao;
@Test
void testGetById() {
System.out.println(bookDao.selectById(2));
}
}
private BookDao bookDao;
报错内容Could not autowire.No beans of 'BookDao'type found.
。
二、解决方法:
1、将@Autowired
改为@Resource
。
原因(spring中注解@Resource 与@Autowire 区别):
-
@Autowired按byType自动注入。
-
@Resource默认按byName自动注入。
- 但是@Resource有两个属性是比较重要的,分是name和type;
- 如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略;
-
@Autowired是spring自己定义的注解,@Resource是J2EE的,由JSR-250规范定义。
2、IDEA将Severity的级别由之前的error改成warning。
Mapper接口通过@Autowired注入,在编辑情况下,无法找不到对应的bean,于是提示找不到对应bean的错误。
但实际上项目是正常运行的。
可在File -- Settings -- Inspections。在Spring Core -- Autowring for Bean Class 中,
将Severity的级别由之前的error改成warning。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~