在Spring中可以通过一组内置的XML标签来配置集合属性,例如:< list>
< map>和< set>。
数组和List
配置java.util.List类型的属性,需要指定< list>标签,在标签里包含一些元素。这些标签 可以通过< value>指定简单的常量值,通过< ref>指定对其他Bean的引用。通过< bean>指定内置bean定义。通过< null/>指定空元素。甚至可以内嵌其他集合。
数组的定义和List一样,都使用< list>元素。
配置java.util.Set需要使用< set>标签,定义的方法与List一样。
如字面量lisi时:
<bean id="t1" class="com.atguigu.spring.test.Teacher">
<property name="tid" value="10011"></property>
<property name="tname" value="卡密尔"></property>
<property name="cls">
<list>
<value>A</value>
<value>哈哈哈</value>
<value>sdasdsadas</value>
</list>
</property>
</bean>
或者list集合是引用数据类型时:
<bean id="s1" class="com.atguigu.spring.test.Student">
<property name="id" value="1001"></property>
<property name="name" value="亚索"></property>
<property name="age" value="35"></property>
<property name="cellphone" value="17623232323"></property>
</bean>
<bean id="s2" class="com.atguigu.spring.test.Student">
<constructor-arg value="1002"></constructor-arg>
<constructor-arg value="瑞文"></constructor-arg>
<constructor-arg value="28" index="2" type="java.lang.Integer"></constructor-arg>
<constructor-arg value="17823237878"></constructor-arg>
</bean>
<bean id="s3" class="com.atguigu.spring.test.Student"
p:id="1003"
p:name="盖伦"
p:age="25"
p:cellphone="19823918932">
</bean>
<bean id="s4" class="com.atguigu.spring.test.Student">
<property name="id" value="1004"></property>
<property name="name" value="ez"></property>
<property name="age" value="26"></property>
<property name="cellphone" value="18926267575"></property>
<property name="teacher" ref="teacher"></property>
</bean>
<bean id="t2" class="com.atguigu.spring.test.Teacher">
<property name="tid" value="10012"></property>
<property name="tname" value="杰斯"></property>
<property name="students">
<list>
<ref bean="s1"/>
<ref bean="s2"/>
<ref bean="s3"></ref>
<ref bean="s4"/>
</list>
</property>
</bean>
Map
Java.util.Map通过< map>标签定义,< map>标签里可以使用多个< entry>作为子标签。每个条目包含一个键和一个值。
必须在< key>标签里定义键。
因为键和值的类型没有限制,所以可以自由地为它们指定< value>、< ref>、< bean>或< null/>元素。
可以将Map的键和值作为< entry>的属性定义:简单常量使用key和value来定义;bean引用通过key-ref和value-ref属性定义。
<bean id="t3" class="com.atguigu.spring.test.Teacher">
<property name="tid" value="10015"></property>
<property name="tname" value="青钢影"></property>
<property name="bossmap">
<map>
<entry>
<key>
<value>1001</value>
</key>
<value>基兰</value>
</entry>
<entry>
<key>
<value>1002</value>
</key>
<value>斯维因</value>
</entry>
</map>
</property>
</bean>
集合类型的bean
如果只能将集合对象配置在某个bean内部,则这个集合的配置将不能重用。我们需要 将集合bean的配置拿到外面,供其他bean引用。
配置集合类型的bean需要引入util名称空间
<util:list id="students">
<ref bean="s1"/>
<ref bean="s2"/>
<ref bean="s3"/>
<ref bean="s4"/>
</util:list>
<bean id="t4" class="com.atguigu.spring.test.Teacher">
<property name="tid" value="10020"></property>
<property name="tname" value="永恩"></property>
<property name="students" ref="students"></property>
</bean>
<util:map id="map">
<entry>
<key>
<value>101010</value>
</key>
<value>张三</value>
</entry>
<entry>
<key>
<value>101020</value>
</key>
<value>李四</value>
</entry>
</util:map>
<bean id="t5" class="com.atguigu.spring.test.Teacher">
<property name="tid" value="10030"></property>
<property name="tname" value="艾瑞利亚"></property>
<property name="bossmap" ref="map"></property>
</bean>