Spring Bean自動裝配

<!-- 配置一個dog -->
	<bean id="dog" class="com.pas.collection.Dog">
		<property name="name" value="大黃" />
		<property name="age" value="3" />
	</bean>
	<!-- master -->
	<bean id="master" class="com.pas.collection.Master" autowire="byName">
		<property name="name" value="小李" />
	</bean>
	<!-- master -->
	<bean id="master1" class="com.pas.collection.Master" autowire="byType">
		<property name="name" value="小李" />
	</bean>
	<!-- master -->
	<bean id="master2" class="com.pas.collection.Master" autowire="constructor">
		<property name="name" value="小李" />
	</bean>
/*
 * defualt 這個須要在<beans defualt-autorwire=「指定」 /> 當你在<beans >指定了
 * default-atuowrite後, 全部的bean的 默認的autowire就是 指定的裝配方法; 若是沒有在<beans
 * defualt-autorwire=「指定」 /> 沒有 defualt-autorwire=「指定」 ,則默認是
 * defualt-autorwire=」no」
 */

模式 說明
no  
byName

根據屬性名自動裝配。此選項將檢查容器並根據名字查找與屬性徹底一致的bean,並將其與屬性自動裝配。例如,在bean定義中將autowire設置爲by name,而該bean包含master屬性(同時提供setMaster(..)方法),Spring就會查找名爲master的bean定義,並用它來裝配給master屬性。 spa

byType

若是容器中存在一個與指定屬性類型相同的bean,那麼將與該屬性自動裝配。若是存在多個該類型的bean,那麼將會拋出異常,並指出不能使用byType方式進行自動裝配。若沒有找到相匹配的bean,則什麼事都不發生,屬性也不會被設置。若是你不但願這樣,那麼能夠經過設置dependency-check="objects"讓Spring拋出異常。 code

constructor

byType的方式相似,不一樣之處在於它應用於構造器參數。若是在容器中沒有找到與構造器參數類型一致的bean,那麼將會拋出異常。 xml

autodetect

經過bean類的自省機制(introspection)來決定是使用constructor仍是byType方式進行自動裝配。若是發現默認的構造器,那麼將使用byType方式。 it

相關文章
相關標籤/搜索