@Autowired注解注入的xxxMapper报错问题及解决
@autowired注解注入的xxxmapper报错
项目场景
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之间的耦合。
@autowired无法加载mapper,报错404或者500
当我一直在排错的时候,寻找注解少添加或者数据库无法拿到文件的时候,粗心大意蒙蔽了我。。
当@autowired无法加载mapper,报错404或者500的时候,要多关注以下几点
是否包名一致,加载mapper这个接口的时候,包名是否是一致的
是否在 private xxxmapper xxxmapper;上加入了autowired。如果启动类无法启动显示,必须要加(request = false)
启动类一定要不要放在java包下,要跟你的com.xxxx这个包下
以上是我个人总结踩坑,希望大家面对bug的时候还是要多加细心,多半是因为粗心大意导致,要么就是没加注解,要么就是包名不一致,再或者就是启动类放在了java包的下面。希望能给大家一个参考,也希望大家多多支持。
上一篇: 组合查询之核心:拼接字符串
下一篇: JDK源码学习笔记——String
推荐阅读
-
Xcode8下iOS10常见报错闪退,字体适配和编译不过的问题及解决方案
-
Xcode8下iOS10常见报错闪退,字体适配和编译不过的问题及解决方案
-
@Autowired 和 @Resource注解, 一个接口有多个实现类的时候Spring注入遇到的问题
-
IDEA链接MySQL报错08001和连接成功后不显示表的问题及解决方法
-
解决angularjs service中依赖注入$scope报错的问题
-
解决使用@AutoWired注入出现的but was actually of type 'com.sun.proxy.$Proxy**问题
-
maven的pom文件报错——plugins问题及解决办法
-
阿里云镜像安装docker报错的问题及解决方案
-
解决Test类中不能使用Autowired注入bean的问题
-
安装gin出现的问题及解决和设置代理报错解决