1. 程式人生 > >@Autowired註解與 @Resource註解的區別

@Autowired註解與 @Resource註解的區別

@Resource和@Autowired兩者都是做bean的注入使用。

其實@Resource並不是Spring的註解,他的包是javax.annotation.Resource 需要匯入。但是Spring支援該註解的注入。

共同點:兩者都可以寫在欄位和setter方法上。兩者如果都寫在欄位上,就不需要寫寫setter方法。

不同點如下:

先來說一說@Autowired

    @Autowired為Spring提供的註解,

    需匯入Package:org.springframework.beans.factory.annotation.Autowired;

    只按照byType 注入。

@Autowired註解是按型別裝配依賴物件,預設情況下它要求依賴物件必須存在,如果允許null值,可以設定它required屬性為false。如果我們想使用按名稱裝配,可以結合@Qualifier註解一起使用。

再說說@Resource

@Resource預設按 byName 自動注入,由J2EE提供。

    需匯入Package:  javax.annotation.Resource

    @Resource有兩個中重要的屬性:name和type ,而Spring將@Resource註解的name屬性解析為bean的

    名字,而type屬性則解析為bean的型別。所以如果使用name屬性,則使用byName的自動注入策略,而使用

    type屬性時則使用 byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。

 注:最好是將@Resource放在setter方法上。

    @Resource裝配順序 

  (1). 如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則丟擲異常;

  (2). 如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不到則丟擲異常;

  (3). 如果指定了type,則從上下文中找到型別匹配的唯一bean進行裝配,找不到或者找到多個,都會丟擲異常;

  (4). 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;如果沒有匹配,則回退為一個原始型別進行匹配,如果匹配則自動裝配;

    @Resource的作用相當於@Autowired,只不過@Autowired按byType自動注入。

3. 使用區別
    @Resource(name="loginService") 
    private LoginService loginService;

    @Autowired(required=false)@Qualifier("loginService") 
    private LoginService loginService;

   (1)[email protected] 與@Resource都可以用來裝配bean. 都可以寫在欄位上,或寫在setter方法上;
   (2)[email protected] 預設按型別裝配,預設情況下必須要求依賴物件必須存在,如果要允許null值,可以設

    置它的required屬性為false,如:@Autowired(required=false) .

如果我們想使用名稱裝配可以結合 @Qualifier註解進行使用;

    (3)[email protected](這個註解屬於J2EE的),預設安裝名稱進行裝配,名稱可以通過name屬性進行指定,如果沒
    有指定name屬性,當註解寫在欄位上時,預設取欄位名進行安裝名稱查詢,如果註解寫在setter方法上預設取屬
    性名進行裝配。當找不到與名稱匹配的bean時才按照型別進行裝 配。但是需要注意的是,如果name屬性一旦指
    定,就只會按照名稱進行裝配。

相關推薦

@Autowired註解@resource註解區別(十分詳細)

背景: 今天下班路上看到一個大貨車,於是想到了裝配,然後腦海裡跳出了一個註解@Autowired(自動裝配),於是又想到最近工作專案用的都是@Resource註解來進行裝配。於是本著學什麼東西都要一鑽到底才能從菜鳥變大神的精神!!我就認真研究了一下,在此總結一波。以下內容先分別解釋一下兩個註解,再進行共同點

@Autowired註解 @Resource註解區別

@Resource和@Autowired兩者都是做bean的注入使用。 其實@Resource並不是Spring的註解,他的包是javax.annotation.Resource 需要匯入。但是Spring支援該註解的注入。 共同點:兩者都可以寫在欄位和setter

Spring之註解 @Autowired 註釋@Resource註釋的區別

來公司也差不過一年了,因為公司是做支付的所以這一年的時間大部分的時間去關注了公司的業務,好像確實忽略了研究框架技術了。今天猛然間看到Spring中的某些註解我卻確實想不起來其中的用途了,這一篇僅以複習和學習Spring註解了! @Resource篇 spring2.5提供

Spring中@Autowired註解、@Resource註解區別

不用 它的 查找 允許 type 規範 找到 註入 以及 Spring不但支持自己定義的@Autowired註解,還支持幾個由JSR-250規範定義的註解,它們分別是@Resource、@PostConstruct以及@PreDestroy。   @Resource的作

@Autowired@Resource註解

[email protected]註解: @Autowired( import org.springframework.beans.factory.annotation.Autowired;)是Spring的註解,由spring容器管理 (1)@Aut

spring中@Autowired註解、@Resource註解區別,以及@Qualifier的使用

Spring不但支援自己定義的@Autowired註解,還支援幾個由JSR-250規範定義的註解,它們分別是@Resource、@PostConstruct以及@PreDestroy。   @Resource的作用相當於@Autowired,只不過@Autowired按b

04 Spring的@Autowired註解、@Resource註解、@Service註解

什麼是註解 傳統的Spring做法是使用.xml檔案來對bean進行注入或者是配置aop、事務,這麼做有兩個缺點: 1、如果所有的內容都配置在.xml檔案中,那麼.xml檔案將會十分龐大;如果按需求分開.xml檔案,那麼.xml檔案又會非常多。總之這將導致配置檔案的可讀性與可維護性變得很

轉:Spring中 @Autowired標籤 @Resource標籤 的區別

Spring不但支援自己定義的@Autowired註解,還支援由JSR-250規範定義的幾個註解,如:@Resource、 @PostConstruct及@PreDestroy。 1. @Autowired    @Autowired是Spring 提供的,需匯入  

@Autowired@Resource區別(二)

這篇文章打算通過一個例項來詳解@AutoWired和@Resource。 我的專案中有兩個測試service分別是class A 和class B class A @Service public class A { } class B @Service

Spring5:@Autowired註解、@Resource註解和@Service註解

什麼是註解 傳統的Spring做法是使用.xml檔案來對bean進行注入或者是配置aop、事物,這麼做有兩個缺點: 1、如果所有的內容都配置在.xml檔案中,那麼.xml檔案將會十分龐大;如果按需求分開.xml檔案,那麼.xml檔案又會非常多。總之這將導致配置檔案的可讀性

@Autowired @Resource區別?

@Resource的作用相當於@Autowired,只不過@Autowired按byType自動注入,而@Resource預設按 byName自動注入罷了。@Resource有兩個屬性是比較重要的,分是name和type,Spring將@Resource註解的name屬性解析為bean的名字

Autowried註解Resource註解區別

過程 情況 通過 找到 如何 依賴註入 方式 null 部分 目錄 概述 Autowried Resource Resource註解的裝配順序 總結 概述 在使用Spring框架的過程中, 依賴註入是必須的, 大多時候會使用Autowried註解來進行依賴註入, 但是

Spring中 @Autowired標籤 @Resource標籤 的區別

Spring不但支援自己定義的@Autowired註解,還支援由JSR-250規範定義的幾個註解,如:@Resource、 @PostConstruct及@PreDestroy。 1. @Autowired     @Autowire

Spring @Autowired註解、@Resource註解和@Service註解

  什麼是註解 傳統的Spring做法是使用.xml檔案來對bean進行注入或者是配置aop、事物,這麼做有兩個缺點: 1、如果所有的內容都配置在.xml檔案中,那麼.xml檔案將會十分龐大;如果按需求分開.xml檔案,那麼.xml檔案又會非常多。總之這將導致配置檔案的可讀性與

Spring的@Autowired註解、@Resource註解和@Service註解

什麼是註解 傳統的Spring做法是使用.xml檔案來對bean進行注入或者是配置aop、事物,這麼做有兩個缺點: 1、如果所有的內容都配置在.xml檔案中,那麼.xml檔案將會十分龐大;如果按需求分開.xml檔案,那麼.xml檔案又會非常多。總之這將導致配置檔案的可讀性與可維護性變得很低 2、在開發中在.

Spring框架註解:@Autowired註解、@Resource註解和@Service註解

什麼是註解傳統的Spring做法是使用.xml檔案來對bean進行注入或者是配置aop、事物,這麼做有兩個缺點:1、如果所有的內容都配置在.xml檔案中,那麼.xml檔案將會十分龐大;如果按需求分開.xml檔案,那麼.xml檔案又會非常多。總之這將導致配置檔案的可讀性與可維護

【淺談JavaEE框架】Spring中@Autowired標籤@Resource標籤的區別

@Autowired  Spring 2.5 引入了 @Autowired 註釋,它可以對類成員變數、方法及建構函式進行標註,完成自動裝配的工作。  通過 @Autowired的使用來消除 set ,get方法。 要實現我們要精簡程式的目的。 @Autowired預設

@Autowired @Resource區別(詳細)

不用 數據庫 聲明式 構造 eve ring 自動註入 post 方法 參考博文: http://www.cnblogs.com/happyyang/articles/3553687.html http://blog.csdn.net/revent/article/deta

Spring中@Autowired@Resource區別

一、相同點 @Autowired與@Resource都用於注入bean 兩者都可以用在setter方法或直接用在欄位上。 二、 不同點 1、所屬不同 @Autowired由Spring提供,而@Res

@Autowired @Resource區別 及@Autowired 在成員變數和set方法的區別

@Autowired和@Resource都可以用來裝配bean,都可以寫在欄位上,或者方法上。@Autowired屬於Spring的;@Resource為JSR-250標準的註釋,屬於J2EE的。@Au