spring中使用@Autowired注解無法注入的情況及解決
spring @Autowired注解無法注入
問題簡述
在使用spring框架的過程中,常會遇到這種兩情況:
1、在掃描的包以外使用需要使用mapper
2、同目錄下兩個controller或者兩個service,在使用@Autowired注解注入mapper或者service時,其中一個可以注入,另一個卻為空。
原因:(此處只說第二種)
樓主在經(jīng)過調(diào)試后發(fā)現(xiàn),在框架啟動的過程中,此注解其實是注入過的,并非沒有注入,只是在其后某處抹除了,至于原因,原諒樓主能力有限還未弄清楚,歡迎大家指正交流。
解決方案
這里樓主給出一種解決方案,實在無法注入的情況下,我們可以采用工具類的方法來注入:
@Component //當(dāng)前類注解為spring組件 public class AbnormalRateUtil { // 定義一個該類的靜態(tài)變量 private static AbnormalRateUtil abnormalRateUtil; //注入所需mapper @Autowired private InterFaceInfoMapper interFaceInfoMapper; @PostConstruct //此注解的方法在bean加載前執(zhí)行 private void init() { abnormalRateUtil = this; abnormalRateUtil.interFaceInfoMapper=this.interFaceInfoMapper; //初始化時將靜態(tài)化的interFaceInfoMapper進(jìn)行了實例化 } //靜態(tài)get方法 public static AbnormalRateUtil getAbnormalRateUtil() { return abnormalRateUtil; } //靜態(tài)get方法 public static InterFaceInfoMapper getInterFaceInfoMapper() { return abnormalRateUtil.interFaceInfoMapper; } }
調(diào)用方式
在使用時可直接通過此工具類進(jìn)行調(diào)用,如下:
List<InterFaceRuler> ruleList=AbnormalRateUtil.getInterFaceInfoMapper().findRuleById(id);
@Autowired注解注入失敗,提示could not autowire
controller層無法調(diào)用接口層提示could not autowire的解決辦法
主要原因是因為我們的spring檢驗級別的問題,我們可以通過降低檢驗的安全級別就可以解決這一問題。
File —> Settings—>Editor—>Inspections—>Spring————》將最右邊的Serverity改為Warning
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進(jìn)行排序的案例
今天小編就為大家分享一篇關(guān)于List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進(jìn)行排序的案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12jackson 如何將實體轉(zhuǎn)json json字符串轉(zhuǎn)實體
這篇文章主要介紹了jackson 實現(xiàn)將實體轉(zhuǎn)json json字符串轉(zhuǎn)實體,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10