使用@Autowired註解報錯解決的辦法

方案一:@Autowired(required = false)   設置required 屬性值爲 false,錯誤提示消失。

方案二:用@Resource註解替換@Autowired註解,錯誤提示消失。

@Autowired
基於spring的註解org.springframework.beans.factory.annotation.Autowired,它默認是按類型進行的裝配的。
任何給定bean類只有一個構造函數(最大值)可以聲明這個註釋,並將'required'參數設置爲true,表示構造函數在用作Spring bean時要自動裝配。如果多個非必需構造函數聲明瞭註釋,則它們將被視爲自動裝配的候選者。將選擇具有最大數量的依賴項的構造函數,這些構造函數可以通過匹配Spring容器中的bean來滿足。如果不能滿足任何候選者,則將使用主要/默認構造函數(如果存在)。如果一個類只聲明一個構造函數開頭,它將始終被使用,即使沒有註釋。帶註釋的構造函數不必是公共的。

 

@Resource
是基於j2ee的註解(可以減少了與spring的耦合)(JDK1.6以上支持)默認是按名字進行註解。
註釋標記應用程序所需的資源。此註釋可以應用於應用程序組件類,或者該組件類的字段或方法。如果將該註釋應用於一個字段或方法,那麼初始化應用程序組件時容器將把所請求資源的一個實例注入其中。如果將該註釋應用於組件類,則該註釋將聲明一個應用程序在運行時將查找的資源。
即使此註釋沒有被標記爲 Inherited,部署工具仍然需要檢查任意組件類的所有超類,以發現這些超類中所有使用此註釋的地方。所有此類註釋實例都指定了應用程序組件所需的資源。注意,此註釋可能出現在超類的 private 字段和方法上;在這種情況下容器也需要執行注入操作。

 

springboot 中@Autowired文件報錯可能是 其他類不在啓動類的同級包或子級包下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章