@Autowired 與@Resource的區別

@Autowired 與@Resource的區別:

  •   @Autowired與@Resource都可以用來裝配bean. 都可以寫在字段上,或寫在setter方法上。@Autowired默認按類型裝配(這個註解是屬業spring的),默認情      況下必須要求依賴對象必須存在,如果要允許null值,可以設置它的required屬性爲false,如:@Autowired(required=false),如果我們想使用名稱裝配可以        結合@Qualifier註解進行使用,  

  • 如下:privateBaseDao baseDao;  @Autowired()@Qualifier("baseDao")    private BaseDaobaseDao;    

  • @Resource(這個註解屬於J2EE的),默認安裝名稱進行裝配,名稱可以通過name屬性進行指定,如果沒有指定name屬性,當註解寫在字段上時,默認取      字段名進行安裝名稱查找,如果註解寫在setter方法上默認取屬性名進行裝配。當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果        name屬性一旦指定,就只會按照名稱進行裝配。private BaseDao baseDao;  推薦使用:@Resource註解在字段上,這樣就不用寫setter方法了,並且這個注      解是屬於J2EE的,減少了與spring的耦合。這樣代碼看起就比較優雅 如下:
  • @Resource(name="baseDao")    privateBaseDao baseDao; 
  •   
  • 注意:如果沒有指定name屬性,並且按照默認的名稱仍然找不到依賴對象時,@Resourve註解會回退到按類型裝配。但一旦指定了name屬性,就只能按照名稱裝配了

















發佈了22 篇原創文章 · 獲贊 9 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章