现有三个类:
地址(城市,街道)
车(车名,价格,速度)
人(人名,地址,车)
首先在xml里面配置好地址 和 车(此处使用了P命名空间,可自动提示字段):
<bean id="address" class="com.csu.autowire.Address"
p:city="ChangSha" p:street="ShaoShan">
</bean>
<bean id="car" class="com.csu.factory.Car"
p:name="Benz" p:price="632275" p:speed="290">
</bean>
在配置person的时候,处理人与 地址 人与车的关系时,可用:
p:address-ref="address" p:car-ref="car"
这种方式是可行的,但是有一种更简单的方法即自动装配。
自动装配又有两种不同的形式,分别是:byName ,byType。
(1)byName
要求Person的属性名 与 bean的id名 一致,如果可以匹配则装配,无法匹配则不装配。
<bean id="Person" class="com.csu.autowire.Person"
p:name="LiuQiao" autowire="byName">
</bean>
(2)byType
要求Person属性的类型与bean的class 一致。
<bean id="Person" class="com.csu.autowire.Person"
p:name="LiuQiao" autowire="byType">
</bean>
使用byType有一个问题:当同一个类型的Class对应了多个bean之后,便会抛出异常。
实际应用情况:在整合框架时需要使用,但是其他情况下为清晰起见不建议使用。