@Autowired和@Resource的區別(筆記)

用途:做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

原文出處:https://www.cnblogs.com/wangxiaoce/p/7056907.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容