Autowried注解和Resource注解的區別


1.概述

在使用Spring框架的過程中, 依賴注入是必須的, 大多時候會使用Autowried注解來進行依賴注入, 但是也可以使用Resource注解來實現注入.

那么兩個注解有什么區別呢? 它們又是如何使用的呢?

2.Autowried

用來裝配bean, 可作用於字段上, 也可以作用於setter方法上.

是Spring的注解.

默認情況下要求對象必須存在, 它要求依賴對象必須存在. 若允許null值, 可以設置它的required為false.

默認按照類型進行裝配注入. 如果想按照名稱進行裝配的話, 需要與Qualifer注解搭配使用.

@Autowried
@Qualifier("admin")
private AdminDAO adminDAO;

3.Resource

用來裝配bean, 可作用於字段上, 也可以作用於setter方法上.

是J2EE的注解.

默認按照名稱來裝配注入, 只有找不到與名稱匹配的bean才會按照類型來注入.

它有兩個屬性是比較重要的:

  • name: Spring將name的屬性值解析為bean的名稱, 使用byName的自動注入策略
  • type: Spring將type的屬性值解析為bean的類型, 使用byType的自動注入策略
    如果既不指定name屬性又不指定type屬性, Spring這時通過反射機制使用byName自動注入策略

Resource注解的裝配順序

  • 如果同時指定了name屬性和type屬性, 那么Spring將從容器中找唯一匹配的bean進行裝配, 找不到則拋出異常
  • 如果指定了name屬性值, 則從容器中查找名稱匹配的bean進行裝配, 找不到則拋出異常
  • 如果指定了type屬性值, 則從容器中查找類型匹配的唯一的bean進行裝配, 找不到或者找到多個都會拋出異常
  • 如果都不指定, 則會自動按照byName方式進行裝配, 如果沒有匹配, 則回退一個原始類型進行匹配, 如果匹配則自動裝配

4.總結

Resource注解是J2EE提供的, 而Autowried注解是Spring提供的, 如果想減少對Spring的依賴建議使用Resource注解.

其實也沒必要, Spring框架目前大部分應用都使用着, 使用Spring的注解也沒什么不好.

不過我個人喜歡使用Resource注解.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM