spring实战-自动装配bean

xiaoxiao2021-02-28  99

如果采用显式的装配所有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>

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

转载请注明原文地址: https://www.6miu.com/read-57108.html

最新回复(0)