解決bean對象注入報(bào)錯(cuò):Field in required a bean of type‘‘that could not be found.問題
問題現(xiàn)象
今天在運(yùn)行新項(xiàng)目的時(shí)候,出現(xiàn)了一下報(bào)錯(cuò):
Field XxxUserExtDao in com.xxx.auth.service.controller.abs.BaseController required a bean of type 'com.xxx.auth.service.mapper.run.XxxUserExtDao' that could not be found.
問題分析
前提
在完成上述操作之前,請先基于mybatis創(chuàng)建好dao層接口類對應(yīng)的dao層實(shí)現(xiàn)類(一般都是以xml文件的形式,并確保mapper標(biāo)簽的namespace屬性指定為dao層接口類的全路徑。)
從報(bào)錯(cuò)信息可知:
這是因?yàn)閟pring的Ioc容器在注入bean對象的時(shí)候,在 BaseController 類中檢測到了 @Autowired 注解,于是就會去尋找這個(gè) XxxUserExtDao 對象的注入方式:
然后檢測到 XxxUserExtDao 這個(gè)類中帶有 @Component 注解,該注解用于除了@Controller(控制層)、@Service(業(yè)務(wù)層)、@Repository(dao層的實(shí)現(xiàn)類)之外,需要注入成bean對象的類;
注意:
這里值得一提的是:由于dao層的實(shí)現(xiàn)類對于項(xiàng)目結(jié)構(gòu)而言,太冗余了,每寫一個(gè)dao層接口,就得手寫一個(gè)實(shí)現(xiàn)類,于是我們可以通過注解的方式,來實(shí)現(xiàn)自動(dòng)創(chuàng)建dao層實(shí)現(xiàn)類,而不再需要自己手動(dòng)創(chuàng)建實(shí)現(xiàn)類和添加@Repository注解了,方式有兩種:
1. 在 dao層接口類 上添加 @Mapper注解。 作用:在接口類上添加了 @Mapper注解 ,在編譯之后會自動(dòng)生成相應(yīng)的接口實(shí)現(xiàn)類:
2. 在 主類(啟動(dòng)類)上添加 @MapperScan注解,并指定dao層接口的包路徑,在編譯之后會自動(dòng)生成相應(yīng)的接口實(shí)現(xiàn)類。
建議
兩種方法取其中一種即可,這里建議使用方法2,這樣就不需要每個(gè)dao層都添加@Mapper注解了?。。?/strong>
解決方法
在 主類(啟動(dòng)類)上添加 @MapperScan注解,并指定dao層接口的包路徑,在編譯之后會自動(dòng)生成相應(yīng)的接口實(shí)現(xiàn)類:
啟動(dòng)成功:
調(diào)用接口成功:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于ZooKeeper的會話機(jī)制Session解讀
這篇文章主要介紹了關(guān)于ZooKeeper的會話機(jī)制Session解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02spring boot中多線程開發(fā)的注意事項(xiàng)總結(jié)
spring boot 通過任務(wù)執(zhí)行器 taskexecutor 來實(shí)現(xiàn)多線程和并發(fā)編程。下面這篇文章主要給大家介紹了關(guān)于spring boot中多線程開發(fā)的注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09IntelliJ?IDEA?2022.2最新版本激活教程(親測可用版)永久激活工具分享
Jetbrains官方發(fā)布了?IntelliJ?IDEA2022.2?正式版,每次大的版本更新,都會有較大的調(diào)整和優(yōu)化,除本次更新全面擁抱?Java?17?外,還有對IDE?UI界面,安全性,便捷性等都做了調(diào)整和優(yōu)化完善,用戶體驗(yàn)提升不少,相信后面會有不少小伙伴跟著更新2022-08-08java中break和continue區(qū)別及使用場合分析
本文力圖通過實(shí)例加使用場合詳解來引導(dǎo)菜鳥重新認(rèn)識break和continue語句,需要的朋友可以參考下2014-01-01淺析Java如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常
HTTP協(xié)議里定義了一系列的狀態(tài)碼用來表明請求的狀態(tài),如常用的200表示請求正常,404表示請求的資源不存在,所以本文就來和大家討論一下如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常,感興趣的可以了解下2024-03-03