先定义一个测试类,由于本文将要介绍注入各种集合时如何配置,故这个类包含各种集合,类名和属性名不好取,没有特殊含义: public class Test { private List Test类中,分别定义了List,Map,Set,Array等5种集合类型的属性,下面在Spring配置文件中,分别为这些类型的属性注入值: <bean id="test" class="com.abc.Test"> <property name="listTest"> <list> <value>ListAvalue> <value>ListBvalue> <value>ListCvalue> list> property> <property name="mapTest"> <map> <entry key="key1" value="value1" /> <entry key="key2" value-ref="object" /> map> property> <property name="setTest"> <set> <value>SetAvalue> <bean class="com.abc.OtherBean1" /> <ref local="com.abc.OtherBean2" /> set> property> <property name="propertiesTest"> <props> <prop key="prop1">value1prop> <prop key="prop2">value2prop> props> property> <property name="arrayTest"> <list> <value>Array1value> <bean class="com.abc.OtherBean1" /> <ref local="com.abc.OtherBean2" /> list> property> bean> 由于集合元素有可以是基本类型值、引用容器中其他Bean、嵌套Bean或集合属性等,因此
当使用
Spring还提供了一个简化语法来支持Properties形参的setter方法,例如我们可以使用如下配置片段来配置Properties类型的属性: <property name="propertiesTest"> <value> key1=value1 key2=value2 value> property> 虽然这种配置方式更简单,但是它也有一个缺点:属性名、属性值都只能是英文或数字,不能包含中文字符 从Spring2开始,Spring IoC容器支持集合的合并:子Bean中的集合属性可以从其父Bean的集合属性继承而来,同时,子Bean中的属性会覆盖父Bean中属性名相同的值。 也就是说,子Bean的集合属性的最终值是父Bean、子Bean合并后的最终结果,下面是一个示例: <bean id="parent" abstract="true" class="com.abc.Parent"> <property name="websites"> <props> <prop key="baidu">www.baidu.comprops> <prop key="google">www.google.com.hkprop> <props> property> bean> <bean id="child" parent="parent"> <property name="websites"> <props merge="true"> <prop key="google">www.google.comprop> <prop key="tencent">www.qq.comprop> <props> property> bean> 通过上面的配置后,child中的属性将变为: baidu=www.baidu.com google=www.google.com tencent=www.qq.com |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|