服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - @Autowired注解注入的xxxMapper报错问题及解决

@Autowired注解注入的xxxMapper报错问题及解决

2022-07-08 09:56懒得吃早餐 Java教程

这篇文章主要介绍了@Autowired注解注入的xxxMapper报错问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@autowired注解注入的xxxmapper报错

项目场景

mybatis-plus测试

问题描述

在mybatis-plus场景的测试中发现,通过@autowired注解注入的usermapper会报错

@Autowired注解注入的xxxMapper报错问题及解决

这是因为usermapper 并不是一个可以创建出对象的一个类,而是一个接口。

@Autowired注解注入的xxxMapper报错问题及解决

?
1
2
3
4
5
@override
        public void run() {
            bytes = mminstream.read(buffer);
            mhandler.obtainmessage(read_data, bytes, -1, buffer).sendtotarget();
        }

解决方案

方案一:

通过添加@repository注解。

@Autowired注解注入的xxxMapper报错问题及解决

方案二:

在不使用@repository注解的情况下,可以通过将@autowired注解改为@resource注解来实现注入。

@Autowired注解注入的xxxMapper报错问题及解决

分析

因为没有实现接口所以@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这个接口的时候,包名是否是一致的

@Autowired注解注入的xxxMapper报错问题及解决

是否在 private xxxmapper xxxmapper;上加入了autowired。如果启动类无法启动显示,必须要加(request = false)

@Autowired注解注入的xxxMapper报错问题及解决

启动类一定要不要放在java包下,要跟你的com.xxxx这个包下

@Autowired注解注入的xxxMapper报错问题及解决

以上是我个人总结踩坑,希望大家面对bug的时候还是要多加细心,多半是因为粗心大意导致,要么就是没加注解,要么就是包名不一致,再或者就是启动类放在了java包的下面。希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_32461005/article/details/115863590

延伸 · 阅读

精彩推荐