用途:做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注解
public class TestServiceImpl {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
}
@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