自动装配之Autodetect
Autodetect:通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。
下面通过示例来理解:
JavaBean代码:
//JavaBeanàAddressServiceI定义了一个address属性,和一个相应的set依赖注入方法
public class AddressServiceImpl {
/**住址*/
private String address;
public void setAddress(String address){
this.address=address;
}
}
//JavaBeanàHomeAddressServiceImpl继承了AddressServiceImpl
public class HomeAddressServiceImpl extends AddressServiceImpl {}
//JavaBeanàEmpServiceImpl,定义一个companyAddress,和一个相应构造器依赖注入。
public class EmpServiceImpl {
/**公司地址*/
private AddressServiceImpl companyAddress;
public EmpServiceImpl(AddressServiceImpl companyAddress){
this.companyAddress=companyAddress;
}
}
autodetect.xml文件:
<bean id="addressServiceImpl" class="cn.csdn.service.AddressServiceImpl" scope="singleton">
<property name="address">
<value>北京上海</value>
</property>
</bean>
<bean id="homeAddressServiceImpl" class="cn.csdn.service.HomeAddressServiceImpl" scope="prototype"
parent="addressSerciceImpl">
<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl" scope="singleton" autowire="autodetect"/>
提示:这节除了autowire的值和上一节constructor的值不一样,其余都一样。JavaBean中有默认的构造器,使用byType方式,否则使用constructor。这里因有构造器,所以byType。
注意:同样黄色区域和绿色区域,只则其一相同类型只能在配置文件中出现一次。