通过<list/>,<set/>,<map/>以及<props/>元素定义和设置与java collection类型对应的List,Set,Map,Rproperties的值。
1 import
java.util.Iterator;
2 import
java.util.List;
3 import
java.util.Map;
4 import
java.util.Properties;
5 import
java.util.Set;
6
7 import
org.springframework.beans.factory.BeanFactory;
8 import
org.springframework.beans.factory.xml.XmlBeanFactory;
9 import
org.springframework.core.io.FileSystemResource;
10
11 public class
CollectionInjection {
12
13 private
Map map;
14
15 private
Properties props;
16
17 private
Set set;
18
19 private
List list;
20
21 public static void
main(String[] args) {
22 BeanFactory factory = new XmlBeanFactory(new
FileSystemResource(
23 "src/applicationContext.xml"
));
24
25 CollectionInjection instance =
(CollectionInjection)
factory.getBean(
"
injectCollection
"
);
26
instance.displayInfo();
27
}
28
29 public void
setList(List list) {
30 this.list =
list;
31
}
32
33 public void
setSet(Set set) {
34 this.set =
set;
35
}
36
37 public void
setMap(Map map) {
38 this.map =
map;
39
}
40
41 public void
setProps(Properties props) {
42 this.props =
props;
43
}
44
45 public void
displayInfo() {
46
47 // display the Map
48 Iterator i =
map.keySet().iterator();
49
50 System.out.println("Map contents:\n"
);
51 while
(i.hasNext()) {
52 Object key =
i.next();
53 System.out.println("Key: " + key + " - Value: " +
map.get(key));
54
}
55
56 // display the properties
57 i =
props.keySet().iterator();
58 System.out.println("\nProperties contents:\n"
);
59 while
(i.hasNext()) {
60 String key =
i.next().toString();
61 System.out.println("Key: " + key + " - Value: "
62 +
props.getProperty(key));
63
}
64
65 // display the set
66 i =
set.iterator();
67 System.out.println("\nSet contents:\n"
);
68 while
(i.hasNext()) {
69 System.out.println("Value: " +
i.next());
70
}
71
72 // display the list
73 i =
list.iterator();
74 System.out.println("\nList contents:\n"
);
75 while
(i.hasNext()) {
76 System.out.println("Value: " +
i.next());
77
}
78
}
79
}
1 public class
RefBean {
2 public
String toString()
3
{
4 return "refBean"
;
5
}
6 }
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd"
>
3 <beans>
4
5 <!-- oracle bean used for a few examples -->
6 <bean id="refBean" name="refB" class="RefBean"/>
7
8 <!-- collection injection samples -->
9 <bean id="injectCollection" class="CollectionInjection">
10 <property name="map">
11 <map>
12 <entry key="nameValue">
13 <value>gzhb_improviser</value>
14 </entry>
15 <entry key="refBeanValue">
16 <ref local="refBean"/>
17 </entry>
18 </map>
19 </property>
20 <property name="props">
21 <props>
22 <prop key="firstName"> gzhb </prop>
23 <prop key="secondName"> improviser </prop>
24 </props>
25 </property>
26 <property name="set">
27 <set>
28 <value>gzhb</value>
29 <ref local="refBean"/>
30 </set>
31 </property>
32 <property name="list">
33 <list>
34 <value>improviser</value>
35 <ref local="refBean"/>
36 </list>
37 </property>
38 </bean>
39 </beans
import
java.util.Iterator;
import
java.util.List;
import
java.util.Map;
import
java.util.Properties;
import
java.util.Set;
import
org.springframework.beans.factory.BeanFactory;
import
org.springframework.beans.factory.xml.XmlBeanFactory;
import
org.springframework.core.io.FileSystemResource;
public
class
CollectionInjection {
private
Map map;
private
Properties props;
private
Set set;
private
List list;
public
static
void
main(String[] args) {
BeanFactory factory
=
new
XmlBeanFactory(
new
FileSystemResource(
"
src/applicationContext.xml
"
));
CollectionInjection instance
=
(CollectionInjection) factory.getBean(
"
injectCollection
"
);
instance.displayInfo();
}
public
void
setList(List list) {
this
.list
=
list;
}
public
void
setSet(Set set) {
this
.set
=
set;
}
public
void
setMap(Map map) {
this
.map
=
map;
}
public
void
setProps(Properties props) {
this
.props
=
props;
}
public
void
displayInfo() {
//
display the Map
Iterator i
=
map.keySet().iterator();
System.out.println(
"
Map contents:\n
"
);
while
(i.hasNext()) {
Object key
=
i.next();
System.out.println(
"
Key:
"
+
key
+
"
- Value:
"
+
map.get(key));
}
//
display the properties
i
=
props.keySet().iterator();
System.out.println(
"
\nProperties contents:\n
"
);
while
(i.hasNext()) {
String key
=
i.next().toString();
System.out.println(
"
Key:
"
+
key
+
"
- Value:
"
+
props.getProperty(key));
}
//
display the set
i
=
set.iterator();
System.out.println(
"
\nSet contents:\n
"
);
while
(i.hasNext()) {
System.out.println(
"
Value:
"
+
i.next());
}
//
display the list
i
=
list.iterator();
System.out.println(
"
\nList contents:\n
"
);
while
(i.hasNext()) {
System.out.println(
"
Value:
"
+
i.next());
}
}
}
运行结果:
Map contents:
Key: nameValue - Value: gzhb_improviser
Key: refBeanValue - Value: refBean
Properties contents:
Key: secondName - Value: improviser
Key: firstName - Value: gzhb
Set contents:
Value: gzhb
Value: refBean
List contents:
Value: improviser
Value: refBean
注意:map的key或value值,或set的value值不能一下元素:
bean,ref,idref,list,set,map,props,vaues,null
集合合并
Spring2.0支持集合合并,子类Bean实例可以合并和重写抽象父类Bean实例的集合属性。
1.
<
beans
>
2.
<
bean
id
="parent"
abstract
="true"
class
="example.ComplexObject"
>
3.
<
property
name
="pro"
>
4.
<
props
>
5.
<
prop
key
="pro1"
>
pro1
</
prop
>
6.
<
prop
key
="pro3"
>pro3
</
prop
>
7.
</
props
>
8.
</
property
>
9.
</
bean
>
10.
<
bean
id
="child"
parent
="parent"
>
11.
<
property
name
="pro"
>
12.
<!--
the merge is specified on the *child* collection definition
-->
13.
<
props
merge
="true"
>
14.
<
prop
key
="pro2"
>
pro2
</
prop
>
15.
<
prop
key
="pro3"
>
pro3
</
prop
>
16.
</
props
>
17.
</
property
>
18.
</
bean
>
19.
<
beans
>
通过合并,子bean的pro3值覆盖父bean的值,不同集合类型不能合并,子bean中的merge必须定义,否则出现异常。
凤凰涅槃/浴火重生/马不停蹄/只争朝夕
隐姓埋名/低调华丽/简单生活/完美人生