spring实战-自动装配bean

如果采用显式的装配所有bean,可能会觉得会配置很多的bean,spring定义了一套自动装配bean的方式,减轻bean装配的负担


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/util
	http://www.springframework.org/schema/util/spring-util.xsd"
	default-autowire="byName">
	<!-- 以上配置默认自动装配方式 -->

	<!-- 自动装配有四种类型:byType,buName,constructor -->
	
	<bean id="proxyInfo" class="com.halfworlders.proxy.ProxyInfo" 
		primary="false">
		<property name="ip" value="127.0.0.0"></property>
	</bean>

	<!-- 如果采用autowire="byType"模式自动装配,为了避免因为多个同类型抛出异常,可以采用primary属性,但是primary比较怪异的时,默认为true,所以需要把除了期望首选装配的bean以外,把其他bean设置为false -->
	<bean id="proxyInfo1" class="com.halfworlders.proxy.ProxyInfo"
		primary="true">
			<property name="ip" value="127.0.0.1"></property>
	</bean>
	
	<!-- autowire-candidate="false"取消bean装配的的候选资格 -->
	<bean id="proxyInfo2" class="com.halfworlders.proxy.ProxyInfo" 
		autowire-candidate="false">
		<property name="ip" value="127.0.0.2"></property>
	</bean>
	
	<!-- autowire="byName"为属性自动装配ID与该属性的名字相同的Bean -->
	<bean id="connection" class="com.halfworlders.web.Connection"
		autowire="byName" primary="true">
	</bean>

	<!-- autowire="byType"如果有多个同类型bean,byType会抛出异常,可以采用两种方式避免:1,为自动装配的Bean设置首选;2,取消bean装配的的候选资格 -->
	<bean id="connection1" class="com.halfworlders.web.Connection"
		autowire="byType" primary="false">
	</bean>
	
	<bean id="timeOut" class="java.lang.Integer">
		<constructor-arg value="5"></constructor-arg>
	</bean>
	
	<!-- autowire="constructor"和byType具有相同的局限性,当发现多个同类型bean时会报异常,同时如果被装配的Bean有多个构造器时,系统默认使用参数最多的一个构造函数 -->
	<bean id="connection2" class="com.halfworlders.web.Connection"
		autowire="constructor">
	</bean>
	
	<!-- autowire在装配属性是可以和显式的属性装配<property>混合使用,但是在constructor自动装配时不能和<constructor-arg>混合使用 -->
</beans>


以上使用的所有类,见上篇文章点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值