@Autowired和@Resource的區(qū)別

相同點(diǎn):

@Resource的作用相當(dāng)于@Autowired犀暑,均可標(biāo)注在字段或者屬性的setter方法上。

不同點(diǎn):

  • @Autowired默認(rèn)按類型裝配(這個(gè)注解是屬業(yè)spring的)记劈,默認(rèn)情況下必須要求依賴對象必須存在膝藕,如果要允許null值鲸湃,可以設(shè)置它的required屬性為false,如@Autowired(required=false) 休偶,如果我們想使用名稱裝配可以結(jié)合@Qualifier注解進(jìn)行使用梁厉,如下:

      @Autowired() @Qualifier("baseDao")    
      private BaseDao baseDao;
    
  • @Autowired實(shí)現(xiàn):

    • 注解驅(qū)動配置會向spring容器中注冊AutowiredAnnotationBeanPostProcessor
    • 當(dāng) Spring 容器啟動時(shí),AutowiredAnnotationBeanPostProcessor 將掃描 Spring 容器中所有 Bean,當(dāng)發(fā)現(xiàn) Bean 中擁有 @Autowired 注釋時(shí)就找到和其匹配(默認(rèn)按類型匹配)的 Bean词顾,并注入到對應(yīng)的地方中去八秃。
  • @Resource 是JDK1.6支持的注解,默認(rèn)按照名稱進(jìn)行裝配肉盹,名稱可以通過name屬性進(jìn)行指定昔驱。也提供按照byType 注入。

    • 如果沒有指定name屬性上忍,當(dāng)注解寫在字段上時(shí)骤肛,默認(rèn)取字段名,按照名稱查找窍蓝。
    • 當(dāng)注解標(biāo)注在屬性的setter方法上腋颠,即默認(rèn)取屬性名作為bean名稱尋找依賴對象。
    • 當(dāng)找不到與名稱匹配的bean時(shí)才按照類型進(jìn)行裝配吓笙。但是需要注意的是淑玫,如果name屬性一旦指定,就只會按照名稱進(jìn)行裝配面睛。
  • @Resource裝配順序
      1. 如果同時(shí)指定了name和type混移,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配,找不到則拋出異常
      2. 如果指定了name侮穿,則從上下文中查找名稱(id)匹配的bean進(jìn)行裝配,找不到則拋出異常
      3. 如果指定了type毁嗦,則從上下文中找到類型匹配的唯一bean進(jìn)行裝配亲茅,找不到或者找到多個(gè),都會拋出異常
      4. 如果既沒有指定name狗准,又沒有指定type克锣,則自動按照byName方式進(jìn)行裝配;如果沒有匹配腔长,則回退為一個(gè)原始類型進(jìn)行匹配袭祟,如果匹配則自動裝配;

          @Resource(name="baseDao")    
          private BaseDao baseDao; 
    

他們的主要區(qū)別就是@Autowired是默認(rèn)按照類型裝配的 @Resource默認(rèn)是按照名稱裝配的

  • byName 通過參數(shù)名 自動裝配捞附,如果一個(gè)bean的name 和另外一個(gè)bean的 property 相同巾乳,就自動裝配。
  • byType 通過參數(shù)的數(shù)據(jù)類型自動自動裝配鸟召,如果一個(gè)bean的數(shù)據(jù)類型和另外一個(gè)bean的property屬性的數(shù)據(jù)類型兼容胆绊,就自動裝配

在基于主機(jī)方式配置Spring的配置文件中,你可能會見到<context:annotation-config/>
這樣一條配置欧募,他的作用是式地向 Spring 容器注冊

  • AutowiredAnnotationBeanPostProcessor
  • CommonAnnotationBeanPostProcessor
  • PersistenceAnnotationBeanPostProcessor
  • RequiredAnnotationBeanPostProcessor

這 4 個(gè)BeanPostProcessor压状。注冊這4個(gè)BeanPostProcessor的作用,就是為了你的系統(tǒng)能夠識別相應(yīng)的注解跟继。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末种冬,一起剝皮案震驚了整個(gè)濱河市镣丑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娱两,老刑警劉巖莺匠,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谷婆,居然都是意外死亡慨蛙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門纪挎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來期贫,“玉大人,你說我怎么就攤上這事异袄⊥常” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵烤蜕,是天一觀的道長封孙。 經(jīng)常有香客問我,道長讽营,這世上最難降的妖魔是什么虎忌? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮橱鹏,結(jié)果婚禮上膜蠢,老公的妹妹穿的比我還像新娘。我一直安慰自己莉兰,他們只是感情好挑围,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糖荒,像睡著了一般杉辙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捶朵,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天蜘矢,我揣著相機(jī)與錄音,去河邊找鬼泉孩。 笑死硼端,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寓搬。 我是一名探鬼主播珍昨,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镣典?” 一聲冷哼從身側(cè)響起兔毙,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兄春,沒想到半個(gè)月后澎剥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赶舆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年哑姚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芜茵。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叙量,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出九串,到底是詐尸還是另有隱情绞佩,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布猪钮,位于F島的核電站品山,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏烤低。R本人自食惡果不足惜肘交,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扑馁。 院中可真熱鬧酸些,春花似錦、人聲如沸檐蚜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闯第。三九已至,卻和暖如春缀拭,著一層夾襖步出監(jiān)牢的瞬間咳短,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工蛛淋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咙好,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓褐荷,卻偏偏與公主長得像勾效,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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