使用@Autowired註解有錯誤提示的解決
使用@Autowired註解有錯誤提示
使用Spring boot +mybatis框架時,在service實現類中使用Mapper類,給Mapper類添加@Autowired註解時發現
有錯誤提示:could not autowire,no beans of “XXX” type found
但程序的編譯和運行都正常。
處理方式
方案一:@Autowired(required = false) 設置required 屬性值為 false,錯誤消失
方案二:用@Resource註解替換@Autowired註解,錯誤消失
@Resource註解與@Autowired註解的異同點
這兩個註解都是用作bean的註入時使用,都是為一個對象變量省去寫get,set方法,自動為這個對象註入實例化對象(即註入依賴)註入的方式還是有所區別的 :
@Autowired
是基於spring的註解org.springframework.beans.factory.annotation.Autowired,它默認是按類型進行的裝配的,如果想要它按名字進行裝配則需在@autowired下面添加@qualifier(“name”)`註解,都無法找到唯一的一個實現類的時候報錯。@Autowired註解默認情況下必須要求依賴對象必須存在,如果要允許null值,則應該設置它的required屬性為false,@Resource
是基於j2ee的註解(可以減少瞭與spring的耦合),(JDK1.6以上支持)默認是按名字進行註解,若不指定裝配bean的名字,當註解寫在字段上時,默認取字段名,按照名稱查找通過set方法進行裝配,倘若有多個子類,則會報錯。需要註意的是name屬性一旦指定,就隻會按照名稱進行裝配
Spring的@Autowired註解報錯改為警告
使用@Autowired註解在idea裡會有error提示,不影響程序正常運行,據我觀察身邊同事們大多也是選擇無視這個error,但一條紅線放在這看著確實難受。後來得知可以把這裡的error改為warning,並且不會幹擾其他代碼。
打開idea的settings,找到如下圖所示位置,修改自動註入時的error錯誤為warning警告。
成功修改後就不會有煩人的紅色下劃線瞭(變成瞭黃色的),不建議隨意修改這些檢測,除非你確實很瞭解它。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Spring Bean自動裝配入門到精通
- 關於@Autowierd && @Resource 你真的瞭解嗎
- Spring整合Mybatis 掃描註解創建Bean報錯的解決方案
- Spring使用@Autowired註解實現自動裝配方式
- 基於@Autowierd(自動裝配)的使用說明