1. 程式人生 > >@Autowired和@Resource的區別

@Autowired和@Resource的區別

1、@Autowired預設按型別裝配(這個註解是屬於spring的),預設情況下要求依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false,如: @Autowired(required=false) ,如果我們想使用名稱裝配可以結合@Qualifier註解進行使用。 2、@Resource 是JDK1.6支援的註解,預設按照名稱進行裝配,名稱可以通過name屬性進行指定,如果沒有指定name屬性,當註解寫在欄位上時,預設取欄位名,按照名稱查詢,如果註解寫在setter方法上預設取屬性名進行裝配。當找不到與名稱匹配的bean時才按照型別進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。

他們的主要區別就是@Autowired是預設按照型別裝配的 @Resource預設是按照名稱裝配的byName 通過引數名 自動裝配,如果一個bean的name 和另外一個bean的 property 相同,就自動裝配。byType 通過引數的資料型別自動自動裝配,如果一個bean的資料型別和另外一個bean的property屬性的資料型別相容,就自動裝配