spring中使用@Autowired注解無法注入的情況及解決
spring @Autowired注解無法注入
問題簡述
在使用spring框架的過程中,常會遇到這種兩情況:
1、在掃描的包以外使用需要使用mapper
2、同目錄下兩個controller或者兩個service,在使用@Autowired注解注入mapper或者service時,其中一個可以注入,另一個卻為空。
原因:(此處只說第二種)
樓主在經(jīng)過調(diào)試后發(fā)現(xiàn),在框架啟動的過程中,此注解其實(shí)是注入過的,并非沒有注入,只是在其后某處抹除了,至于原因,原諒樓主能力有限還未弄清楚,歡迎大家指正交流。
解決方案
這里樓主給出一種解決方案,實(shí)在無法注入的情況下,我們可以采用工具類的方法來注入:
@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)行了實(shí)例化
}
//靜態(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的解決辦法
主要原因是因?yàn)槲覀兊膕pring檢驗(yàn)級別的問題,我們可以通過降低檢驗(yàn)的安全級別就可以解決這一問題。
File —> Settings—>Editor—>Inspections—>Spring————》將最右邊的Serverity改為Warning

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
一文帶你看懂Android動畫的實(shí)現(xiàn)原理
動畫是 Android 應(yīng)用程序中重要的交互特性,ndroid 提供了多種動畫效果,包括平移、縮放、旋轉(zhuǎn)和透明度等,它們可以通過代碼或 XML 來實(shí)現(xiàn),本文將介紹 Android 動畫的原理和實(shí)現(xiàn)方法,并提供一些示例,需要的朋友可以參考下2023-07-07
List集合中對數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例
今天小編就為大家分享一篇關(guān)于List集合中對數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
jackson 如何將實(shí)體轉(zhuǎn)json json字符串轉(zhuǎn)實(shí)體
這篇文章主要介紹了jackson 實(shí)現(xiàn)將實(shí)體轉(zhuǎn)json json字符串轉(zhuǎn)實(shí)體,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

