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属性。

byType

如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。

constructor

byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。

autodetect

通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。



你可能感兴趣的:(spring,bean,自动装配)