spring ioc容器可以自動裝配(autowire)來協作bean之間的相互聯絡。
autowire一共有五種型別。由於autowire可以針對單個bean進行設定,因此可以讓有些bean使用autowire,有些bean不採用。autowire的方便之處在減少或者消除屬性或構造器引數的設定,這樣可以減少我們的配置檔案。
no不採用自動裝配
byname
根據屬性名自動裝配。此選項將檢查容器並根據名字查詢與屬性完全一致的bean,並將其與屬性自動裝配。
例如,在bean定義中將autowire設定為by name,而該bean包含master屬性(同時提供setmaster(..)方法),spring就會查詢名為master的bean定義,並用它來裝配給master屬性。
bytype
如果容器中存在乙個與指定屬性型別相同的bean,那麼將與該屬性自動裝配。如果存在多個該型別的bean,那麼將會丟擲異常,並指出不能使用bytype方式進行自動裝配。若沒有找到相匹配的bean,則什麼事都不發生,屬性也不會被設定。如果你不希望這樣,那麼可以通過設定dependency-check=」objects」讓spring丟擲異常。
constructor
與bytype的方式類似,不同之處在於它應用於構造器引數。如果在容器中沒有找到與構造器引數型別一致的bean,那麼將會丟擲異常。
autodetect
通過bean類的自省機制(introspection)來決定是使用constructor還是bytype方式進行自動裝配。如果發現預設的構造器,那麼將使用bytype方式。
注意:
自動裝配的優點:
自動裝配的缺點:
spring 自動裝配bean
在spring中,支援 5 自動裝配模式。public class customer public void setperson person person 要啟用 autowired,必須註冊 autowiredannotationbeanpostprocessor 可以使用在 set方法 構造方...
(Spring)自動裝配bean
自動裝配說明 spring的自動裝配需要從兩個角度來實現,或者說是兩個操作 元件掃瞄和自動裝配組合發揮巨大威力,使得顯示的配置降低到最少。public class cat public class dog public class people public void setcat cat cat ...
Spring自動裝配bean
configuration顯示這是乙個配置類,componentscan無其他配置則預設在該類所在包內開啟元件掃瞄,若有多個包則寫成 componentscan basepackages 若有多個類,則 componentscan basepackagesclasses package sounds...