轉spring
都是用來裝配Bean的註解。均可以寫在字段上,或寫在setter方法上。ui
@Autowired註解是按照類型(byType)裝配依賴對象,默認狀況下它要求依賴對象必須存在,若是容許null值,能夠設置它的required屬性爲false。若是咱們想使用按照名稱(byName)來裝配,能夠結合@Qualifier註解一塊兒使用。如:this
publicclass TrayServiceImpl {3d
// 下面兩種@Autowired只要使用一種便可 對象
//這種方法是隻按照byType注入class
@Autowiredrequire
private TrayDao trayDao;// 用於字段上 方法
@Autowiredd3
public void setTrayDao(TrayDao trayDao) {// 用於屬性的方法上異常
this.trayDao = trayDao;
}
}
或者
publicclass TrayServiceImpl {
//這種寫法是先byType 注入,若是是null值,在byName注入
@Autowired @Qualifier("trayDao")
private TrayDao trayDao;
}
Autowried是Spring提供的註解,而Resource是J2EE提供的註解。Resource有兩個屬性,name和type,resource會把name做爲bean的名稱,type做爲bean的類型。
使用@Resource 註解轉配Bean的順序:
1.若是同時指定了name和type,則從Spring上下文中找到惟一匹配的bean進行裝配,找不到則拋出異常(異常信息:找不到"bean"的聲明);
2.若是指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常;
3.若是指定了type,則從上下文中找到類型匹配的惟一bean進行裝配,找不到或者找到多個,都會拋出異常;
4.若是既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配(見2);若是沒有匹配,則回退爲一個原始類型(TrayDao )進行匹配,若是匹配則自動裝配;
ps:我的推薦使用@Resource註解,這個註解是屬於J2EE的,減小了與spring的耦合。