@Autowired和@Resource的區別

  • 2019 年 12 月 7 日
  • 筆記

用途:做bean的注入時使用

歷史:@Autowired        屬於Spring的註解                org.springframework.beans.factory.annotation.Autowired

@Resource   不屬於Spring的註解,JDK1.6支援的註解    javax.annotation.Resource

共同點:

裝配bean. 寫在欄位上,或寫在setter方法

不同點:

@Autowired  默認按類型裝配 

依賴對象必須存在,如果要允許null值,可以設置它的required屬性為false   @Autowired(required=false)

也可以使用名稱裝配,配合@Qualifier註解

1 public classTestServiceImpl {2 @Autowired3 @Qualifier("userDao")4 privateUserDao userDao;5 }

@Resource  默認按名稱進行裝配,通過name屬性進行指定

publicclassTestServiceImpl {//下面兩種@Resource只要使用一種即可@Resource(name="userDao")privateUserDao userDao;//用於欄位上@Resource(name="userDao")publicvoidsetUserDao(UserDao userDao) {//用於屬性的setter方法上this.userDao =userDao;

}    }

總結:大白話解釋,@Autowired自動註解,舉個例子吧,一個類,倆個實現類,Autowired就不知道注入哪一個實現類,而Resource有name屬性,可以區分。

參考:知乎https://www.zhihu.com/question/39356740

http://www.cnblogs.com/think-in-java/p/5474740.html