spring bean的自動裝配

2021-07-24 19:46:09 字數 1430 閱讀 8935

spring bean的自動裝配

在spring框架應用場景中會有這麼一種情況。乙個bean在不同的使用類裡面都要配置。這個bean相對來說是單獨的。也就是說如果要裝配這個bean.在不同的使用類裡面都需要寫相關的

注入**。那有沒有這麼一種方式。可以通過配置自動的來注入bean到相關的屬性中去。spring容器有這麼四種自動裝配的策略。 如byname、bytype、constructor、autodetect.

byname ---把與bean的屬性名字(id)具有相同的名字的其他bean自動裝配到bean相對應屬性中。如果沒有匹配的bean則不進行裝配。

bytype ---把與bean的屬性具有相同型別的其他bean自動裝配到bean相對應屬性中。如果沒有匹配的bean則不進行裝配

constructor---把與bean的構造器入參具有相同型別的其他bean注入到相對應的構造器入參中。

autodetect---這種方式是會優先使用constructor進行注入。不行則使用bytype.

下面詳細講解這些注入方式

1、 byname是把與bean的屬性名字(id)具有相同的名字的其他bean自動裝配到bean相對應屬性中。如果沒有匹配的bean則不進行裝配。我們在之前配置的bean的方式如下

這裡顯示配置了caid屬性。如果我們配置乙個跟caid屬性一樣名字的bean。如

通過配置autowire屬性為byname。spring會利用此資訊進行自動裝配。同時byname自動裝配會遵循乙個約定。就是為屬性自動裝配跟屬性id或則名字一樣的bean.

在這裡spring會發現caid屬性一樣名字的bean通過setter方式進行裝配。如果沒有,則不裝配。**如

2、 bytype的注入方式是跟byname一樣的。只是bytype匹配的是bean的型別。在當bean的屬性與需要注入的其他bean是匹配的型別的時。spring將會進行自動裝配。

**如但是bytype也有侷限性。當與bean的屬性匹配的型別多餘乙個的時候。spring是不會自己做出選擇。而是丟擲異常。

所以在這個時候需要設定另外乙個屬性primary為true。但是spring預設情況下primary都為true。所以當你確定乙個為優先裝配的bean時設為true。其他設為false.

3、 constructor是構造器注入方式。當使用這種注入方式時直接把屬性刪除。設定autowire為constructor。

spring會去審視user類的構造器。當有跟構造器入參一樣的型別的bean時。spring將進行自動裝配。constructor是構造器注入方式跟bytype一樣的侷限性。

即當有匹配的型別有多個時。spring就無從選擇。

4、autodetect注入方式應該算是比較好的注入策略。他會優先適用constructor進行注入。不行則用bytype方式。

以上是spring自動進行裝配的幾種策略。可以自己根據實際情況進行使用。如有不恰當的地方還請指正。感謝!

Spring Bean的自動裝配

當bean的屬性很少的時候,我們對它進行配置的時候就使用很少的或者元素進行裝配,但是隨著工程體積的增大,bean也可能變得複雜,這時候配置檔案也會變得複雜,和就會變得很多,寫起來就會很費勁,還好spring為我們提供了自動裝配的機制。spring ioc容器可以自動裝配bean,只需要在的autow...

Spring Bean的自動裝配

乙個bean使用其他的bean,除了顯式的配置xml檔案外,也可以通過配置 bean 的autowire屬性來實現bean的自動裝配。自動裝配的好處是減少了構造器注入和setter注入配置 其實就是少了 property 標籤,但是bean裡面set方法還是必須的 減少了配置檔案的長度。spring...

學習spring bean自動裝配

spring 容器可以在不使用和元素的情況下 自動裝配 相互協作的 bean 之間的關係,這有助於減少編寫乙個大的基於 spring 的應用程式的 xml 配置的數量。下列自動裝配模式,它們可用於指示 spring 容器為來使用自動裝配進行依賴注入。你可以使用元素的 autowire 屬性為乙個 b...