spring中resource和autowire的區(qū)別

  1. @Autowired默認(rèn)byType自動(dòng)注入,如果實(shí)例結(jié)果不唯一,那么將會(huì)拋出異常

@Autowired可與@Qualifier("beanName")搭配使用,注入指定bean。

@Autowired
@Qualifier("baseDao")
private BaseDao baseDao;

如,同一個(gè)接口,兩個(gè)實(shí)現(xiàn)類,就可以使用該方式指定注入。

@Autowired(required=false)表示如果spring上下文中沒有找到該類型的bean ,將會(huì)使用

new SoftPMServiceImpl();

private ISoftPMService softPMService = new SoftPMServiceImpl();
  1. @Resource默認(rèn)按byName自動(dòng)注入
    但是@Resource有兩個(gè)屬性是比較重要的,分別是name和type;
    如果使用name屬性,則使用byName的自動(dòng)注入策略; .
    而使用type屬性時(shí)則使用byType自動(dòng)注入策略;

@Resource裝配順序
  1. 如果同時(shí)指定了name和type,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配,找不到則拋出異常
  2. 如果指定了name,則從上下文中查找名稱(id)匹配的bean進(jìn)行裝配,找不到則拋出異常
  3. 如果指定了type,則從上下文中找到類型匹配的唯一bean進(jìn)行裝配,找不到或者找到多個(gè),都會(huì)拋出異常
  4. 如果既沒有指定name,又沒有指定type,則自動(dòng)按照byName方式進(jìn)行裝配;如果沒有匹配,則回退為一個(gè)原始類型進(jìn)行匹配,如果匹配則自動(dòng)裝配;

使用方式如下:

//@Resource(name="dataSource");

@Resource(type="DataSource.class");

@Resource
private DataSource dataSource;
//inject the bean named 'dataSource';
  1. @Autowired是spring自己定義的注解,@Resource是J2EE的,由JSR-250規(guī)范定義
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容