即兴的灵感

思维是一种艺术; 艺术需要灵感。

博客好友

最新评论

Spring笔记之二(Collection Injection)

通过<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必须定义,否则出现异常。


 
凤凰涅槃/浴火重生/马不停蹄/只争朝夕
     隐姓埋名/低调华丽/简单生活/完美人生

posted on 2007-09-24 10:23 poetguo 阅读(1670) 评论(2)  编辑  收藏 所属分类: Spring

评论

# re: Spring笔记之二(Collection Injection) 2007-09-24 11:07 千里冰封

我还是觉得SPRING的XML配置多了一些,EJB3.0就好多了  回复  更多评论   

# re: Spring笔记之二(Collection Injection) 2007-09-24 12:09 improviser

以后有时间也研究研究EJB3.0,到时再请教,先谢啦 :)  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: