1. 程式人生 > >@Resource @Autowired的註解注入及區別

@Resource @Autowired的註解注入及區別

@Resource @Autowired的註解注入及區別

 

@[email protected]在Spring中常用來裝配物件。兩種方法的不同:

 

(1) 提供方不同:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,換句話說就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。

(2) 注入方式:@Autowired按照byType注入(結合@Qualifier註解可以按名稱裝配);@Resource預設按byName自動注入,也提供按照byType 注入。

(3) 屬性:@Autowired按型別裝配依賴物件,預設情況下它要求依賴物件必須存在,如果允許null值,可以設定它required屬性為false。

(4) @Resource裝配順序

a. 如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則丟擲異常。

b. 如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不到則丟擲異常。

c. 如果指定了type,則從上下文中找到型別匹配的唯一bean進行裝配,找不到或者找到多個,都會丟擲異常。

d. 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;如果沒有匹配,則回退為一個原始型別進行匹配,如果匹配則自動裝配。

 

推薦使用@Resource註解在欄位上,這樣就不用寫setter方法了。並且這個註解是屬於J2EE的,減少了與Spring的耦合,這樣程式碼看起就比較優雅 。