注解@Resource與@Autowired的區(qū)別

@Resource

@Resource有兩個(gè)常用屬性name铛碑、type,所以分4種情況

  1. 指定name和type:通過name找到唯一的bean晾捏,找不到拋出異常饺窿;如果type和字段類型不一致,也會(huì)拋出異常
  2. 指定name:通過name找到唯一的bean沈矿,找不到拋出異常
  3. 指定type:通過tpye找到唯一的bean上真,如果不唯一,則拋出異常:NoUniqueBeanDefinitionException
  4. 都不指定:通過字段名作為key去查找羹膳,找到則賦值睡互;找不到則再通過字段類型去查找,如果不唯一陵像,則拋出異常:NoUniqueBeanDefinitionException
  5. 由J2EE提供就珠,默認(rèn)按照byName自動(dòng)注入

@Resource裝配順序:

(1)如果同時(shí)指定了name和type,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配醒颖,找不到則拋出異常

(2)如果指定了name嗓违,則從Spring上下文中查找名稱(id)匹配的bean進(jìn)行裝配,找不到則拋出異常

(3)如果指定了type图贸,則從Spring上下文中找到類型匹配的唯一bean進(jìn)行裝配蹂季,找不到或找到多個(gè),都拋出異常

(4)如果既沒指定name疏日,也沒指定type,則自動(dòng)按照byName方式進(jìn)行裝配偿洁。如果沒有匹配,則回退為一個(gè)原始類型進(jìn)行匹配沟优,如果匹配則自動(dòng)裝配涕滋。

@Resource的作用相當(dāng)于@Autowired,只不過@Autowired按byType自動(dòng)注入挠阁。

@Autowired

@Autowired由Spring提供宾肺,只按照byType注入

@Autowired只有一個(gè)屬性required,默認(rèn)值為true侵俗,為true時(shí)锨用,找不到就拋異常,為false時(shí)隘谣,找不到就賦值為null

@Autowired按類型查找增拥,如果該類型的bean不唯一,則拋出異常;可通過組合注解解決@Autowired()@Qualifier("baseDao")

相同點(diǎn)

  1. Spring都支持
  2. 都可以作用在字段和setter方法上

不同點(diǎn)

  1. Resource是JDK提供的掌栅,而Autowired是Spring提供的
  2. Resource不允許找不到bean的情況秩仆,而Autowired允許(@Autowired(required = false)
  3. 指定name的方式不一樣,@Resource(name = "baseDao"),@Autowired()@Qualifier("baseDao")
  4. Resource默認(rèn)通過name查找猾封,而Autowired默認(rèn)通過type查找

(1)@Autowired與@Resource都可以用來裝配bean澄耍,都可以寫在字段setter方法上

(2)@Autowired默認(rèn)按類型裝配,默認(rèn)情況下必須要求依賴對(duì)象存在晌缘,如果要允許null值齐莲,可以設(shè)置它的required屬性false。如果想使用名稱裝配可以結(jié)合@Qualifier注解進(jìn)行使用枚钓。

(3)@Resource默認(rèn)按照名稱進(jìn)行裝配瑟押,名稱可以通過name屬性進(jìn)行指定搀捷,如果沒有指定name屬性,當(dāng)注解寫在字段上時(shí)多望,默認(rèn)取字段名進(jìn)行名稱查找嫩舟。如果注解寫在setter方法上默認(rèn)取屬性名進(jìn)行裝配。當(dāng)找不到與名稱匹配的bean時(shí)才按照類型進(jìn)行裝配怀偷。但是需要注意的是家厌,如果name屬性一旦指定,就只會(huì)按照名稱進(jìn)行裝配椎工。

推薦使用@Resource注解在字段上饭于,這樣就不用寫setter方法了,并且這個(gè)注解是屬于J2EE的维蒙,減少了與Spring的耦合掰吕。

轉(zhuǎn)載:注解@Resource與@Autowired的區(qū)別

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颅痊,隨后出現(xiàn)的幾起案子殖熟,更是在濱河造成了極大的恐慌,老刑警劉巖斑响,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菱属,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡舰罚,警方通過查閱死者的電腦和手機(jī)纽门,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來营罢,“玉大人膜毁,你說我怎么就攤上這事。” “怎么了瘟滨?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵候醒,是天一觀的道長。 經(jīng)常有香客問我杂瘸,道長倒淫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任败玉,我火速辦了婚禮敌土,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘运翼。我一直安慰自己返干,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布血淌。 她就那樣靜靜地躺著矩欠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悠夯。 梳的紋絲不亂的頭發(fā)上癌淮,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音沦补,去河邊找鬼乳蓄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛夕膀,可吹牛的內(nèi)容都是我干的虚倒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼产舞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼裹刮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起庞瘸,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤捧弃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后擦囊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體违霞,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年瞬场,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买鸽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贯被,死狀恐怖眼五,靈堂內(nèi)的尸體忽然破棺而出妆艘,到底是詐尸還是另有隱情,我是刑警寧澤看幼,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布批旺,位于F島的核電站,受9級(jí)特大地震影響诵姜,放射性物質(zhì)發(fā)生泄漏汽煮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一棚唆、第九天 我趴在偏房一處隱蔽的房頂上張望暇赤。 院中可真熱鬧,春花似錦宵凌、人聲如沸鞋囊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溜腐。三九已至,卻和暖如春微饥,著一層夾襖步出監(jiān)牢的瞬間逗扒,已是汗流浹背古戴。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工欠橘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人现恼。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓肃续,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叉袍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子始锚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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