@Autowired注解注入的xxxMapper報錯問題及解決
@Autowired注解注入的xxxMapper報錯
項目場景
Mybatis-Plus測試
問題描述
在Mybatis-Plus場景的測試中發(fā)現(xiàn),通過@Autowired注解注入的userMapper會報錯
這是因為UserMapper 并不是一個可以創(chuàng)建出對象的一個類,而是一個接口。
@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget(); }
解決方案
方案一:
通過添加@Repository注解。
方案二:
在不使用@Repository注解的情況下,可以通過將@Autowired注解改為@Resource注解來實現(xiàn)注入。
分析
因為沒有實現(xiàn)接口所以@Autowired會報錯
1、@Autowired默認按照byType方式進行bean匹配,@Resource默認按照byName方式進行bean匹配
2、@Autowired是Spring的注解,@Resource是J2EE的注解,這個看一下導入注解的時候這兩個注解的包名就一清二楚了
Spring屬于第三方的,J2EE是Java自己的東西,因此,建議使用@Resource注解,以減少代碼和Spring之間的耦合。
@Autowired無法加載Mapper,報錯404或者500
當我一直在排錯的時候,尋找注解少添加或者數(shù)據(jù)庫無法拿到文件的時候,粗心大意蒙蔽了我。。
當@Autowired無法加載Mapper,報錯404或者500的時候,要多關(guān)注以下幾點
是否包名一致,加載Mapper這個接口的時候,包名是否是一致的
是否在 private XXXMapper xxxmapper;上加入了Autowired。如果啟動類無法啟動顯示,必須要加(request = false)
啟動類一定要不要放在java包下,要跟你的com.xxxx這個包下
以上是我個人總結(jié)踩坑,希望大家面對Bug的時候還是要多加細心,多半是因為粗心大意導致,要么就是沒加注解,要么就是包名不一致,再或者就是啟動類放在了Java包的下面。希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot導入本地jar后 打包依賴無法加入的解決方案
這篇文章主要介紹了Springboot導入本地jar后 打包依賴無法加入的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Java數(shù)據(jù)結(jié)構(gòu)之對象比較詳解
這篇文章主要為大家詳細介紹了Java中對象的比較、集合框架中PriorityQueue的比較方式以及PriorityQueue的模擬實現(xiàn),感興趣的可以了解一下2022-07-07SpringBoot+Idea熱部署實現(xiàn)流程解析
這篇文章主要介紹了SpringBoot+Idea熱部署實現(xiàn)流程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11