Spring的 Autowired註解的詳細解釋

2021-07-31 06:25:37 字數 1725 閱讀 8179

使用 @autowired 註解進行裝配,只能是根據型別進行匹配。@autowired 註解可以用於 setter 方法、建構函式、字段,甚至普通方法,前提是方法必須有至少乙個引數。@autowired 可以用於陣列和使用泛型的集合型別。然後 spring 會將容器中所有型別符合的 bean 注入進來。@autowired 標註作用於 map 型別時,如果 map 的 key 為 string 型別,則 spring 會將容器中所有型別符合 map 的 value 對應的型別的 bean 增加進來,用 bean 的 id 或 name 作為 map 的 key。

@autowired 標註作用於普通方法時,會產生乙個***,就是在容器初始化該 bean 例項的時候就會呼叫該方法。當然,前提是執行了自動裝配,對於不滿足裝配條件的情況,該方法也不會被執行。

當標註了 @autowired 後,自動注入不能滿足,則會丟擲異常。我們可以給 @autowired 標註增加乙個 required=false 屬性,以改變這個行為。另外,每乙個類中只能有乙個建構函式的 @autowired.required() 屬性為 true。否則就出問題了。如果用 @autowired 同時標註了多個建構函式,那麼,spring 將採用貪心演算法匹配建構函式 ( 建構函式最長 )。

@autowired(required=false) 

@qualifier("ppp")

public void setperson(person p){}

@qualifier 甚至可以作用於方法的引數 ( 對於方法只有乙個引數的情況,我們可以將 @qualifer 標註放置在方法宣告上面,但是推薦放置在引數前面 ),舉例如下:

@autowired(required=false) 

public void sayhello(@qualifier("ppp")person p,string name){}

我們可以在配置檔案中指定某個 bean 的 qualifier 名字,方法如下:

"person" class="footmark.spring.person">

"ppp"/>

如果沒有明確指定 bean 的 qualifier 名字,那麼預設名字就是 bean 的名字。通常,qualifier 應該是有業務含義的,例如 "domain","persistent" 等,而不應該是類似 "person" 方式。

我們還可以將 @qualifier 標註在集合型別上,那麼所有 qualifier 名字與指定值相同的 bean 都將被注入進來。

class="footmark.helloworld">

type="moviequalifier">

key="format"

value="vhs"/>

key="genre"

value="comedy"/>

qualifier>

bean>

class="footmark.helloworld">

key="format"

value="***"/>

key="genre"

value="action"/>

bean>

@autowired 註解對應的後處理註冊與前面相似,只需在配置檔案中增加如下一行即可:

@autowired預設按型別裝配,預設情況下必須要求依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false,例如:@autowired(required=false)

spring中autowire的用法

autowire模式就是在spring的宣告檔案裡用作進行物件間的關聯關係自動繫結的,就是在spring beanfactory內的乙個bean對其bean的引用可以自動進行,而不一定用ref 的方式顯式宣告。在reference的3.3.6節有詳細的介紹,autowire主要有5種模式 1 no ...

spring中autowire的用法

autowire模式就是在spring的宣告檔案裡用作進行物件間的關聯關係自動繫結的,就是在spring beanfactory內的乙個bean對其bean的引用可以自動進行,而不一定用ref 的方式顯式宣告。在reference的3.3.6節有詳細的介紹,autowire主要有5種模式 1 no ...

spring中autowire的用法

autowire模式就是在spring的宣告檔案裡用作進行物件間的關聯關係自動繫結的,就是在spring beanfactory內的乙個bean對其bean的引用可以自動進行,而不一定用ref 的方式顯式宣告。在reference的3.3.6節有詳細的介紹,autowire主要有5種模式 1 no ...