1. 程式人生 > >Autowried註解和Resource註解的區別

Autowried註解和Resource註解的區別

過程 情況 通過 找到 如何 依賴註入 方式 null 部分

目錄

  • 概述
  • Autowried
  • Resource
    • Resource註解的裝配順序
  • 總結

概述

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

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

Autowried

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

是Spring的註解.

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

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

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

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方式進行裝配, 如果沒有匹配, 則回退一個原始類型進行匹配, 如果匹配則自動裝配

總結

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

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

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

Autowried註解和Resource註解的區別