使用@Autowired注解警告Field injection is not recommended

在使用spring框架中的依賴注入注解@Autowired時(shí),idea報(bào)了一個(gè)警告
大部分被警告的代碼都是不嚴(yán)謹(jǐn)?shù)牡胤匠砝埃晕疑钊肓私饬艘幌隆?br> 被警告的代碼如下:

@Autowired
 UserDao userDao;

警告內(nèi)容是

Field injection is not recommended

意思就是使用變量依賴注入的方式是不被推薦的。
使用idea解決策略是這樣的:

Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies
1
意思就是總是使用構(gòu)造器的方式強(qiáng)制注入禁舷。

依賴注入有三種方式:

變量(filed)注入
構(gòu)造器注入
set方法注入
先各自看一下實(shí)現(xiàn)方式
變量(filed)注入

    @Autowired
    UserDao userDao;

構(gòu)造器注入

final
UserDao userDao;

@Autowired
public UserServiceImpl(UserDao userDao) {
    this.userDao = userDao;
}

set方法注入

private UserDao userDao;

@Autowired
public void setUserDao (UserDao userDao) {
    this.userDao = userDao;
}

相比較而言:

優(yōu)點(diǎn):變量方式注入非常簡(jiǎn)潔旅东,沒有任何多余代碼男娄,非常有效的提高了java的簡(jiǎn)潔性行贪。即使再多幾個(gè)依賴一樣能解決掉這個(gè)問題。

缺點(diǎn):不能有效的指明依賴模闲。相信很多人都遇見過一個(gè)bug建瘫,依賴注入的對(duì)象為null,在啟動(dòng)依賴容器時(shí)遇到這個(gè)問題都是配置的依賴注入少了一個(gè)注解什么的尸折,然而這種方式就過于依賴注入容器了啰脚,當(dāng)沒有啟動(dòng)整個(gè)依賴容器時(shí),這個(gè)類就不能運(yùn)轉(zhuǎn),在反射時(shí)無法提供這個(gè)類需要的依賴橄浓。
在使用set方式時(shí)粒梦,這是一種選擇注入,可有可無荸实,即使沒有注入這個(gè)依賴匀们,那么也不會(huì)影響整個(gè)類的運(yùn)行。
在使用構(gòu)造器方式時(shí)已經(jīng)顯式注明必須強(qiáng)制注入准给。通過強(qiáng)制指明依賴注入來保證這個(gè)類的運(yùn)行泄朴。

另一個(gè)方面:
依賴注入的核心思想之一就是被容器管理的類不應(yīng)該依賴被容器管理的依賴,換成白話來說就是如果這個(gè)類使用了依賴注入的類露氮,那么這個(gè)類擺脫了這幾個(gè)依賴必須也能正常運(yùn)行祖灰。然而使用變量注入的方式是不能保證這點(diǎn)的。
既然使用了依賴注入方式畔规,那么就表明這個(gè)類不再對(duì)這些依賴負(fù)責(zé)局扶,這些都由容器管理,那么如何清楚的知道這個(gè)類需要哪些依賴呢叁扫?它就要使用set方法方式注入或者構(gòu)造器注入详民。

總結(jié)下:
變量方式注入應(yīng)該盡量避免,使用set方式注入或者構(gòu)造器注入陌兑,這兩種方式的選擇就要看這個(gè)類是強(qiáng)制依賴的話就用構(gòu)造器方式,選擇依賴的話就用set方法注入由捎。

————————————————
版權(quán)聲明:本文為CSDN博主「下雨了_簡(jiǎn)」的原創(chuàng)文章兔综,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明狞玛。
原文鏈接:https://blog.csdn.net/zhangjingao/article/details/81094529

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末软驰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子心肪,更是在濱河造成了極大的恐慌锭亏,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硬鞍,死亡現(xiàn)場(chǎng)離奇詭異慧瘤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)固该,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門锅减,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伐坏,你說我怎么就攤上這事怔匣。” “怎么了桦沉?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵每瞒,是天一觀的道長(zhǎng)金闽。 經(jīng)常有香客問我,道長(zhǎng)剿骨,這世上最難降的妖魔是什么代芜? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮懦砂,結(jié)果婚禮上蜒犯,老公的妹妹穿的比我還像新娘。我一直安慰自己荞膘,他們只是感情好罚随,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羽资,像睡著了一般淘菩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屠升,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天潮改,我揣著相機(jī)與錄音,去河邊找鬼腹暖。 笑死汇在,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脏答。 我是一名探鬼主播糕殉,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼殖告!你這毒婦竟也來了阿蝶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤黄绩,失蹤者是張志新(化名)和其女友劉穎羡洁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爽丹,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筑煮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了习劫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咆瘟。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诽里,靈堂內(nèi)的尸體忽然破棺而出袒餐,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布灸眼,位于F島的核電站卧檐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏焰宣。R本人自食惡果不足惜霉囚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匕积。 院中可真熱鬧盈罐,春花似錦、人聲如沸闪唆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悄蕾。三九已至票顾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工辰狡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人含鳞。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芹务,于是被迫代替她去往敵國(guó)和親民晒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容