通過(guò)<list/>,<set/>,<map/>以及<props/>元素定義和設(shè)置與java collection類(lèi)型對(duì)應(yīng)的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());
????????}
????}
}
運(yùn)行結(jié)果:
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支持集合合并,子類(lèi)Bean實(shí)例可以合并和重寫(xiě)抽象父類(lèi)Bean實(shí)例的集合屬性。
???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
>
??
通過(guò)合并,子bean的pro3值覆蓋父bean的值,不同集合類(lèi)型不能合并,子bean中的merge必須定義,否則出現(xiàn)異常。
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生