解決mapper無法自動裝配,未找到‘userMapper‘類型的Bean報錯問題
更新時間:2024年11月12日 09:33:49 作者:GooO_O
解決Spring Boot中Mapper無法自動裝配的問題,可以通過在Mapper接口上添加@Repository注解來解決,@Mapper和@Repository雖然都可以將類注冊為Bean,但@Mapper是MyBatis的注解,不需要在Spring中配置掃描地址,而@Repository是Spring的注解
mapper無法自動裝配,未找到‘userMapper‘類型的Bean報錯
解決辦法
報錯原因
因為@Mapper是屬于mybatis,不需要在spring配置中設置掃描地址,通過mapper.xml里面的namespace屬性對應相關的mapper類,spring將動態(tài)的生成Bean后注入到ServiceImpl中。
看了很多同學們的在設置改掉springbean自動裝配的辦法,但是仍報錯。
可以選擇在mapper interface上面,添加@Repository注解:
效果
@Mapper與@Repository的詳細區(qū)別
@Mapper與@Repository的相同點
- 兩個注解都可在dao/mapper層使用(用來標記持久層)
- 生成相應代理對象bean注入到spring容器中
@Mapper與@Repository的不同點
- @Mapper是mybatis的注解,可以單獨使用,也允許存在在多個mapper文件,它不需要在Spring中配置掃描地址,通過xml里面的namespace里面的接口地址,生成Bean后注入到Service層中。
- @Repository是spring提供的注解,能夠將該類注冊成Bean。被依賴注入,但是使用該注解后,在啟動類上要加@MapperScan來表名Mapper類的位置,否則掃描不到。但在idea中,使用@Repository可以消除在業(yè)務層中注入mapper對象時的錯誤。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot之Duration(java.time.Duration)在yml properties中
這篇文章主要介紹了springboot之Duration(java.time.Duration)在yml properties中的配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12JAVA Comparator 和 Comparable接口使用方法
本文介紹了Java中Comparable和Comparator接口的使用,包括它們的定義、方法和應用場景,Comparable用于定義類的自然排序規(guī)則,而Comparator提供了一種靈活的方式來定義對象之間的排序規(guī)則,無需修改類本身,感興趣的朋友一起看看吧2025-03-03