2.配置List集合
配置java.util.List类型的属性,需要指定<list>标签,在标签中包含一些元素,这些标签可以通过<value>指定简单的常量值,通过<ref>指定对其他Bean的引用,通过<bean>指定内置Bean定义,通过<null/>指定空元素,甚至可以内嵌其他集合。
1 <bean id="car3" class="com.wzy.collection.Car"> 2 <constructor-arg value="Audi" index="0" type="java.lang.String"/> 3 <constructor-arg value="ShangHai" index="1" type="java.lang.String"/> 4 <constructor-arg value="400000" index="2" type="double"/> 5 </bean> 6 7 <bean id="car4" class="com.wzy.collection.Car"> 8 <constructor-arg value="baoma" index="0" type="java.lang.String"/> 9 <constructor-arg value="Guangzhou" index="1" type="java.lang.String"/> 10 <constructor-arg value="30000000" index="2" type="double"/> 11 </bean> 12 13 <bean id="car5" class="com.wzy.collection.Car"> 14 <constructor-arg value="benchi" index="0" type="java.lang.String"/> 15 <constructor-arg value="ShenZhen" index="1" type="java.lang.String"/> 16 <constructor-arg value="2000000" index="2" type="double"/> 17 </bean> 18 19 <!--测试如何配置集合属性--> 20 <bean class="com.wzy.collection.Person" id="person3"> 21 <property name="name" value="mike"/> 22 <property name="age" value="20"/> 23 <property name="cars"> 24 <list> 25 <ref bean="car3"/> 26 <ref bean="car4"/> 27 <ref bean="car5"/> 28 </list> 29 </property> 30 </bean>
Java代码:
1 private static void testCollection1() { 2 //测试集合注入 3 //1.获取IOC容器ApplicationContext 4 ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 5 //2.通过容器获取对象 6 Person person = (Person) ctx.getBean("person3"); 7 //3.输出person 8 System.out.println(person); 9 }
输出结果:
3.数组
数组的定义和List一样,都使用<list>。
4.Set集合
配置java.util.Set需要使用<set>标签,定义元素的方法与List一样。
5.Map集合
java.util.Map通过<map>标签定义,<map>标签里可以使用多个<entry>作为子标签,每个条目包含一个键和一个值。必须在<Key>标签定义键值因为键和值的类型没有限制,所以可以自由地为它们指定<value>、<ref>、<bean>、<null>元素。可以将Map的键和值作为<entry>的属性定义:简单常量使用key和value来定义;bean引用通过key-ref和value-ref属性定义。
1 <bean id="newPerson" class="com.wzy.collection.NewPerson"> 2 <property name="name" value="wzy"/> 3 <property name="age" value="24"/> 4 <property name="cars"> 5 <!--使用map节点及map的entry子节点配置Map类型的成员变量--> 6 <map> 7 <entry key="1" value-ref="car3"/> 8 <entry key="2" value-ref="car4"/> 9 <entry key="3" value-ref="car5"/> 10 </map> 11 </property> 12 </bean>
Java代码:
1 private static void testCollection2() { 2 //1.获取IOC容器ApplicationContext 3 ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 4 //2.通过容器获取对象 5 NewPerson newPerson = (NewPerson) ctx.getBean("newPerson"); 6 //3.输出newPerson 7 System.out.println(newPerson); 8 }
输出结果:
6.properties
使用<props>定义java.utils.Properties, 该标签使用多个<prop>作为子标签,每个<prop>标签必须定义key属性。
spring.xml
1 <bean id="dataSource" class="com.wzy.collection.DataSource"> 2 <property name="properties"> 3 <props> 4 <prop key="url">jdbc:mysql://localhost:3306/db</prop> 5 <prop key="username">root</prop> 6 <prop key="password">123456</prop> 7 <prop key="driver">Driver</prop> 8 </props> 9 </property> 10 </bean>
Java Code:
1 private static void testCollection3() { 2 //1.获取IOC容器ApplicationContext 3 ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 4 //2.通过容器获取对象 5 DataSource dataSource = (DataSource) ctx.getBean("dataSource"); 6 //3.输出dataSource 7 System.out.println(dataSource); 8 }
输出结果:
7.使用utility scheme定义集合
在某些情况下,我们需要多个bean同时引用同一个集合元素,那么我们就需要将这些集合元素抽取出来,这样集合元素就可以在不同Bean之间共享集合。将集合元素抽取出来,可以使用util schema里的集合标签定义独立的集合Bean,需要注意的是必须在<beans>根元素里添加util schema定义。
这里首先需要引入util的命名空间
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:util="http://www.springframework.org/schema/util" 5 xmlns:p="http://www.springframework.org/schema/p" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/util 8 http://www.springframework.org/schema/util/spring-util.xsd">
通过util标签定义公共的集合,通过属性注入中的ref属性可以直接进行引用
1 <!--配置独立的集合bean以供多个bean进行引用--> 2 <util:list id="cars"> 3 <ref bean="car3"/> 4 <ref bean="car4"/> 5 <ref bean="car5"/> 6 </util:list> 7 8 <bean id="person4" class="com.wzy.collection.Person"> 9 <property name="name" value="wzy"/> 10 <property name="age" value="24"/> 11 <property name="cars" ref="cars"/> 12 </bean>