Spring笔记之二(Collection Injection)

转贴处 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  }


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


运行结果:
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必须定义,否则出现异常,
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值