用途:作bean的注入時使用html
歷史:@Autowired 屬於Spring的註解 org.springframework.beans.factory.annotation.Autowiredjava
@Resource 不屬於Spring的註解,JDK1.6支持的註解 javax.annotation.Resourcespring
共同點:學習
裝配bean. 寫在字段上,或寫在setter方法ui
不一樣點:this
@Autowired 默認按類型裝配 spa
依賴對象必須存在,若是要容許null值,能夠設置它的required屬性爲false @Autowired(required=false)code
也能夠使用名稱裝配,配合@Qualifier註解htm
1 public class TestServiceImpl { 2 @Autowired 3 @Qualifier("userDao") 4 private UserDao userDao; 5 }
@Resource 默認按名稱進行裝配,經過name屬性進行指定對象
public class TestServiceImpl { // 下面兩種@Resource只要使用一種便可 @Resource(name="userDao") private UserDao userDao; // 用於字段上 @Resource(name="userDao") public void setUserDao(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
歡迎留言,批評指正,一塊兒學習。