转贴处 http://www.blogjava.net/improviser/archive/2007/09/24/147710.html
通过<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 }
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 }
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
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.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必须定义,否则出现异常,
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 >