项目场景:
Mybatis-Plus测试
问题描述:
在Mybatis-Plus场景的测试中发现,通过@Autowired注解注入的userMapper会报错
这是因为UserMapper 并不是一个可以创建出对象的一个类,而是一个接口。
@Override
public void run() {
bytes = mmInStream.read(buffer);
mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
}
解决方案:
方案一 通过添加@Repository注解。方案二
在不使用@Repository注解的情况下,可以通过将@Autowired注解改为@Resource注解来实现注入。
分析:
因为没有实现接口所以@Autowired会报错
1、@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
2、@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了
Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。