- @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();
- @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';
- @Autowired是spring自己定義的注解,@Resource是J2EE的,由JSR-250規(guī)范定義