2.spring:集合属性
1.list
配置java.util.List类型的属性,需要指定<list>标签,在标签里面包含有一些元素,这些标签
可以通过<value>指定简单的常量值,通过<ref>指定对Bean的引用,通过<bean>指定内置的Bean定义,
通过<null />指定空元素,是指可以嵌套在其他的集合
Person.java
public class Person { private String name; private int age; private List<car> cars;
//setter...
}
applicationContext.xml
<!-- list --> <bean id="person3" class="com.MrChengs2.Collection.Person"> <property name="name" value="Mike"></property> <property name="age" value="24"></property> <property name="cars"> <list>
<!-- 1中的Person类 --> <bean class="com.MrChengs1.HelloSpring.car" p:brand="XinXin" p:corp="AnHui"
p:maxSpeech="100" p:price="12345"></bean> <ref bean="car"/> <ref bean="car1"/> </list> </property> </bean>
测试:
Person p = (Person) ctx.getBean("person3"); System.out.println(p);
Person [name=Mike, age=24, cars=[car [brand=XinXin, corp=AnHui, price=12345.0,
maxSpeech=100],
car [brand=LeiNuo, corp=shanghai, price=0.0, maxSpeech=120],
car [brand=AoDI, corp=<shanghai>, price=0.0, maxSpeech=245]]]
2.Map
<Map>:标签里面嵌套<entry>,在<entry>中进行设置
通过<map>标签定义,<map>标签里面可以使用多个<entry>作为子标签,每个条目包含一个键和一个值
必须在<key>标签里面定义
因为键和值的类型没有限制,所以可以自由的为他们指定<value> <ref> <bean> <null>元素
可以将Map的键和值作为<entry>的属性定义,简单的常量可以使用key和value来定义,Bean引用通过key-ref和value-ref属性来定义
使用<props>定义的java.util.Properties,该标签使用多个<prop>作为子标签,每个子标签必须定义key属性
PersonMap.java
public class PersonMap { private String name; private int age; private Map<String,car> cars;
//setter...
}
applicationContext.xml
<bean id="Person4" class="com.MrChengs2.Collection.PersonMap"> <property name="name" value="Rose"></property> <property name="age" value="77"></property> <property name="cars"> <map > <entry key="AA" value-ref="car"></entry> <entry key="BB" value-ref="car1"></entry> </map> </property> </bean>
测试:
PersonMap p1 = (PersonMap) ctx.getBean("Person4"); System.out.println(p1);
PersonMap [name=Rose, age=77, cars={AA=car [brand=LeiNuo, corp=shanghai, price=0.0, maxSpeech=120],
BB=car [brand=AoDI, corp=<shanghai>, price=0.0, maxSpeech=245]}]
3.Properties
DatasourceProperties.java
public class DatasourceProperties { private Properties properties;
//setter...
}
applicationContext.xml
<bean id="properties" class="com.MrChengs2.Collection.DatasourceProperties"> <property name="properties"> <props> <prop key="user">root</prop> <prop key="password">1234</prop> <prop key="jdbcUrl">jdbc:mysql://</prop> <prop key="driverClass">com.mysql.jdbc.Driver</prop> </props> </property> </bean>
测试:
DataSource dataSource = (DataSource) ctx.getBean("properties"); System.out.println(dataSource);
4.配置独立集合的Bean
使用基本的集合标签定义集合时,不能将集合作为独立的Bean定义,导致集合无法引用该集合,所以不能无法在不同的Bean之间共享
可以使用util 里的集合标签独立集合Bean,注意的是,必须在<beans>根元素添util的定义
appliactionContext.xml
<!-- 配置独立的集合Bean 此时需要在NameSpace导入util命名空间 此时引用cars就等于直接引用在这里面的整体内容 --> <util:list id="cars"> <ref bean="car"/> <ref bean="car1" /> </util:list>
<bean id="Persons" class="com.MrChengs2.Collection.Person">
<property name="name" value="zhangshan"></property>
<property name="age" value="25"></property>
<property name="cars" ref="cars"></property>
</bean>
测试:
Person p2 = (Person) ctx.getBean("Persons"); System.out.println(p2);
Person [name=zhangshan, age=25, cars=[car [brand=LeiNuo, corp=shanghai, price=0.0, maxSpeech=120],
car [brand=AoDI, corp=<shanghai>, price=0.0, maxSpeech=245]]]