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...