Autowired和 Resource的使用

2021-09-22 10:24:27 字數 835 閱讀 9302

一. @autowired註解

原始碼:

target()

@retention(retentionpolicy.runtime)

@documented

public @inte***ce autowired .

*/boolean required() default true;

}

可以看到其中只有乙個屬性可以選擇 required,這個屬性代表,我們容器啟動時候是否必須進行值載入給對應的屬性,對於這個註解是通過bytype注入的,意思就是我們容器如果存在型別和當前屬性一樣,將會將容器中的該bean賦值給被@autowired修飾的屬性,如果存在多個型別匹配,請在需要被注入的bean上加@primary進行標識,具體可以參考:autowiredannotationbeanpostprocessor 原始碼

二. @resource註解

原始碼:

@target()

@retention(runtime)

public @inte***ce resource

這個註解主要是預設通過byname進行bean查詢,意思就是如果查詢到我們指定的別名和這個容器中的名字存在相同,而且能夠被正常賦值,那麼可以就查詢成功,如果沒有查到,我們將通過bytype進行查詢,具體原始碼,可以參考commonannotationbeanpostprocessor 原始碼

總結:一般我們使用@autowired和@resource基本沒有咋分,有時候可能會遇到我們@autowired出錯情況,要不就是找不到bean,或者bean超過乙個,這個時候@resource我們通過指定名字注入就能避免部分問題,所以使用根據情況選擇。

Autowired和 Resource詳細講解

autowired和 resource註解的區別 從spring容器中獲取userdao型別bean 實現類 注入該屬性bytype 根據型別注入 如果存在且唯一,則ok 如果不唯一,組合使用 qualifier userdaoimpl 尋找name為userdaoimpl的bean。autowir...

Resource和 Autowired 注入解釋

resource和 autowired都是通過在介面類上加註解實現 實現類的注入 即 要使用 resource和 autowired實現注入某個實體物件,必須先新建乙個實體物件的介面類,然後再讓實體類實現該介面 例 component private class buscar 要實現注入buscar...

Autowired和 Resource註解的區別

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