真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

@Resource和@Autowired的區(qū)別是什么

這篇文章將為大家詳細(xì)講解有關(guān)@Resource和@Autowired的區(qū)別是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的凌海網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

自動(dòng)綁定(Autowiring)模式
模式說(shuō)明
no默認(rèn)值,未激活 Autowiring,需要手動(dòng)執(zhí)行依賴注入對(duì)象
byName根據(jù)被注入屬性的名稱作為Bean名稱進(jìn)行依賴查找,并將對(duì)象設(shè)置到該屬性
byType根據(jù)被注入屬性的類型作為依賴類型進(jìn)行查找,并將對(duì)象設(shè)置到該屬性
constructor特殊的byType類型,用戶構(gòu)造器參數(shù)

@Autowired是Spring中的注解,@Resource是JSR-250中提供的注解,即Java提供的注解,從包名就可以看出來(lái)

Autowired:org.springframework.beans.factory.annotation.Autowired Resource:javax.annotation.Resource

 

@Autowired

@Autowired的依賴注入過(guò)程是由AutowiredAnnotationBeanPostProcessor支持的

具體的注入邏輯在DefaultListableBeanFactory#doResolveDependency

@Autowired的注入邏輯如下

  1. 找到所有類型符合的bean
  2. 如果沒有類型符合的bean,則看@Autowired的required屬性是否為true,是則拋出異常,否則返回null
  3. 如果只有一個(gè),則將這個(gè)bean注入
  4. 如果有多個(gè)bean 4.1 選擇其中帶有Primary注解的bean,如果只有一個(gè)直接注入,如果有多個(gè)bean帶有Primary注解則報(bào)錯(cuò),如果不存在就下一步 4.2 選擇其中優(yōu)先級(jí)最高的bean(優(yōu)先級(jí)使用javax.annotation.Priority表明),如果只有一個(gè)直接注入,如果有多個(gè)bean的優(yōu)先級(jí)并列最高則報(bào)錯(cuò),如果不存在就下一步 4.3 選擇beanName和當(dāng)前要注入的屬性名相同的bean進(jìn)行注入,有則注入,沒有則報(bào)錯(cuò)
 

@Resource

@Resource的依賴注入過(guò)程是由CommonAnnotationBeanPostProcessor支持的

具體的注入邏輯在CommonAnnotationBeanPostProcessor#autowireResource

@Resource的注入邏輯如下

  1. 如果@Resource指定了name,則只會(huì)按照name進(jìn)行查找,當(dāng)找不到時(shí)拋出異常,找到將bean注入
  2. 如果@Resource沒有指定name,則把屬性名作為名字進(jìn)行查找,找到將bean注入,當(dāng)按照名字查找不到時(shí),按照類型進(jìn)行查找

「注意:@Resource按照類型查找的邏輯和@Autowired的一樣,因?yàn)槎际钦{(diào)用了DefaultListableBeanFactory#doResolveDependency方法」

 

總結(jié)

@Autowired:先byType再byName

@Resource:先byName再byType(當(dāng)指定@Resource name屬性時(shí),只會(huì)byName)

關(guān)于@Resource和@Autowired的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)頁(yè)標(biāo)題:@Resource和@Autowired的區(qū)別是什么
鏈接地址:http://weahome.cn/article/peegpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部