1. 程式人生 > >使用@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屬性一旦指定,就只會按照名稱進行裝配