Spring笔记之二(Collection Injection)

转载 2007年09月25日 14:42:00

转贴处 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必须定义,否则出现异常,
 

相关文章推荐

Spring学习笔记(二)依赖注入Dependency Injection

相关概念          依赖:A组件调用B组件的方法,称A组件依赖B组件。          依赖注入(Dependency Injection,DI):也叫控制反转(Inversion ...

基于annotation注解的Spring3 MVC Form Handling Example之二表单提交学习笔记

com.jiangge.common.controller.Student package com.jiangge.common.controller; public class Student {...

spring笔记之二:控制反转注入参数详解

在Spring配置文件中,用户不但可以将String,int等字面值注入到Bean中,还可以将集合、Map等类型的数据注入到Bean中。 1、字面值:     “字面值”一般是指可以用字符串表示的值,...

Spring学习笔记(二)----Constructor Injection or Setter Injection

Spring作为一个全面的应用程序框架,不仅仅使用于Web开发,它能应用于各种应用的开发。     Spring提供容器功能,并且具有轻量级,飞入侵性,IoC,AOP等特性。Spring的核心即是一...

2002-12-11_USB读书笔记之二

  • 2011-04-05 00:22
  • 177KB
  • 下载

python学习笔记二(python的random模块、collection模块)

Python random: Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。 1.     random.random()用于生成一个0到1的随机...

Oracle学习笔记之二

  • 2011-03-23 14:33
  • 1.05MB
  • 下载

Spring Boot异常:BeanCreationException:Injection of autowired dependencies failed;

问题描述: 在使用spring boot框架实现事务控制demo时,启动项目报错如下: org.springframework.beans.factory.BeanCreationExcept...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)