概要:
当java类中含有集合属性:如List、Set、Map、Pros等时,Spring配置文件中该如何配置呢?
下面将进行讲解。

整体结构:


接口
Axe.java 

  1. package org.crazyit.app.service;
  2. public interface Axe
  3. {
  4. public String chop();
  5. }

Person.java

  1. package org.crazyit.app.service;
  2. public interface Person
  3. {
  4. public void test();
  5. }



实现类
Chinese.java

  1. package org.crazyit.app.service.impl;
  2. import java.util.*;
  3. import org.crazyit.app.service.*;
  4. public class Chinese implements Person
  5. {
  6. // 下面是系列集合类型的成员变量
  7. private List<String> schools;
  8. private Map scores;
  9. private Map<String , Axe> phaseAxes;
  10. private Properties health;
  11. private Set axes;
  12. private String[] books;
  13. public Chinese()
  14. {
  15. System.out.println("Spring实例化主调bean:Chinese实例...");
  16. }
  17. // schools的setter方法
  18. public void setSchools(List schools)
  19. {
  20. this.schools = schools;
  21. }
  22. // scores的setter方法
  23. public void setScores(Map scores)
  24. {
  25. this.scores = scores;
  26. }
  27. // phaseAxes的setter方法
  28. public void setPhaseAxes(Map<String , Axe> phaseAxes)
  29. {
  30. this.phaseAxes = phaseAxes;
  31. }
  32. // health的setter方法
  33. public void setHealth(Properties health)
  34. {
  35. this.health = health;
  36. }
  37. // axes的setter方法
  38. public void setAxes(Set axes)
  39. {
  40. this.axes = axes;
  41. }
  42. // books的setter方法
  43. public void setBooks(String[] books)
  44. {
  45. this.books = books;
  46. }
  47. // 访问上面全部的集合类型的成员变量
  48. public void test()
  49. {
  50. System.out.println(schools);
  51. System.out.println(scores);
  52. System.out.println(phaseAxes);
  53. System.out.println(health);
  54. System.out.println(axes);
  55. System.out.println(java.util.Arrays.toString(books));
  56. }
  57. }

SteelAxe.java

  1. package org.crazyit.app.service.impl;
  2. import org.crazyit.app.service.*;
  3. public class SteelAxe implements Axe
  4. {
  5. public String chop()
  6. {
  7. return "钢斧砍柴真快";
  8. }
  9. }


StoneAxe.java

  1. package org.crazyit.app.service.impl;
  2. import org.crazyit.app.service.*;
  3. public class StoneAxe implements Axe
  4. {
  5. public String chop()
  6. {
  7. return "石斧砍柴好慢";
  8. }
  9. }

配置文件:
beans.xml
  1. <?xml version="1.0" encoding="GBK"?>
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
  6. <!-- 定义2个普通Axe Bean -->
  7. <bean id="stoneAxe" class="org.crazyit.app.service.impl.StoneAxe"/>
  8. <bean id="steelAxe" class="org.crazyit.app.service.impl.SteelAxe"/>
  9. <!-- 定义chinese Bean -->
  10. <bean id="chinese" class="org.crazyit.app.service.impl.Chinese">
  11. <property name="schools">
  12. <!-- 为调用setSchools()方法配置List集合作为参数值 -->
  13. <list>
  14. <!-- 每个value、ref、bean...都配置一个List元素 -->
  15. <value>小学</value>
  16. <value>中学</value>
  17. <value>大学</value>
  18. </list>
  19. </property>
  20. <property name="scores">
  21. <!-- 为调用setScores()方法配置Map集合作为参数值 -->
  22. <map>
  23. <!-- 每个entry配置一个key-value对 -->
  24. <entry key="数学" value="87"/>
  25. <entry key="英语" value="89"/>
  26. <entry key="语文" value="82"/>
  27. </map>
  28. </property>
  29. <property name="phaseAxes">
  30. <!-- 为调用setPhaseAxes()方法配置Map集合作为参数值 -->
  31. <map>
  32. <!-- 每个entry配置一个key-value对 -->
  33. <entry key="原始社会" value-ref="stoneAxe"/>
  34. <entry key="农业社会" value-ref="steelAxe"/>
  35. </map>
  36. </property>
  37. <property name="health">
  38. <!-- 为调用setHealth()方法配置Properties集合作为参数值 -->
  39. <props>
  40. <!-- 每个prop元素配置一个属性项,其中key指定属性名 -->
  41. <prop key="血压">正常</prop>
  42. <prop key="身高">175</prop>
  43. </props>
  44. <!--
  45. <value>
  46. pressure=normal
  47. height=175
  48. </value> -->
  49. </property>
  50. <property name="axes">
  51. <!-- 为调用setAxes()方法配置Set集合作为参数值 -->
  52. <set>
  53. <!-- 每个value、ref、bean..都配置一个Set元素 -->
  54. <value>普通的字符串</value>
  55. <bean class="org.crazyit.app.service.impl.SteelAxe"/>
  56. <ref bean="stoneAxe"/>
  57. <!-- 为Set集合配置一个List集合作为元素 -->
  58. <list>
  59. <value>20</value>
  60. <!-- 再次为List集合配置一个Set集合作为元素 -->
  61. <set>
  62. <value type="int">30</value>
  63. </set>
  64. </list>
  65. </set>
  66. </property>
  67. <property name="books">
  68. <!-- 为调用setBooks()方法配置数组作为参数值 -->
  69. <list>
  70. <!-- 每个value、ref、bean...都配置一个数组元素 -->
  71. <value>疯狂Java讲义</value>
  72. <value>疯狂Android讲义</value>
  73. <value>轻量级Java EE企业应用实战</value>
  74. </list>
  75. </property>
  76. </bean>
  77. </beans>

测试文件:

BeanTest.java


  1. package lee;
  2. import org.springframework.context.*;
  3. import org.springframework.context.support.*;
  4. import org.crazyit.app.service.*;
  5. public class BeanTest
  6. {
  7. public static void main(String[] args)throws Exception
  8. {
  9. ApplicationContext ctx = new
  10. ClassPathXmlApplicationContext("beans.xml");
  11. // 获取容器中Bean,并调用方法。
  12. Person p = ctx.getBean("chinese" , Person.class);
  13. p.test();
  14. }
  15. }

运行结果:

Spring实例化主调bean:Chinese实例...
[小学, 中学, 大学]
{数学=87, 英语=89, 语文=82}
{原始社会=org.crazyit.app.service.impl.StoneAxe@24c414, 农业社会=org.crazyit.app.service.impl.SteelAxe@bfd10a}
{血压=正常, 身高=175}
[普通的字符串, org.crazyit.app.service.impl.SteelAxe@6b62d1, org.crazyit.app.service.impl.StoneAxe@24c414, [20, [30]]]
[疯狂Java讲义, 疯狂Android讲义, 轻量级Java EE企业应用实战]

【Spring学习笔记-4】注入集合类List、Set、Map、Pros等的更多相关文章

  1. Spring 学习笔记 ----依赖注入

    依赖注入 有三种方式,本文只学习下属性注入. 属性注入       属性注入即通过 setXxx方法()注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入方式是 ...

  2. Spring学习笔记--依赖注入

    依赖注入和控制反转:http://baitai.iteye.com/blog/792980出自李刚<轻量级 Java EE 企业应用实战> Java应用是一种典型的依赖型应用,它就是由一些 ...

  3. Spring学习笔记--构造器注入

    之前讲到的名为"duke"的bean有一个私有成员变量beanBags代表这个杂技师bean的一次性能够抛出的最多的数量,Juggler有一个构造函数,构造函数的第一个参数(这里只 ...

  4. Spring学习笔记(七)模拟实际开发过程的调用过程XML版-Setter方式注入

    模拟实际开发过程的调用过程XML版-Setter方式注入 源码获取github [TOC] 1.项目结构 2.jar包跟上个一样 3.重写set方法 UserServiceImpl.java 1234 ...

  5. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  6. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  7. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  8. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  9. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  10. Spring学习笔记(六)—— SSH整合

    一.整合原理 二.整合步骤 2.1 导包 [hibernate] hibernate/lib/required hibernate/lib/jpa 数据库驱动 [struts2] struts-bla ...

随机推荐

  1. SGU 110. Dungeon 计算几何 难度:3

    110. Dungeon time limit per test: 0.25 sec. memory limit per test: 4096 KB The mission of space expl ...

  2. https://blog.csdn.net/u012150179/article/details/38091411

    一 scrapy-redis实现分布式爬取分析 所谓的scrapy-redis实际上就是scrapy+redis其中对redis的操作采用redis-py客户端.这里的redis的作用以及在scrap ...

  3. cf935E

    题解: 树形dp 要记录一个最小的,一个最大的 然后转移 代码: #include<bits/stdc++.h> using namespace std; ; ][],f[N*][],T[ ...

  4. hdu2665

    题解: 裸的主席树,记录最小值 代码: #include<cstdio> #include<cmath> #include<algorithm> #include& ...

  5. 51nod1295

    题解: 考虑到是异或,那么就是位运算 位运算会想到什么?当然是按位拆开 那么就变成了一个个的字符串 考虑了trie 可是貌似有多个问题 那么就用可持久化trie! 代码: #include<bi ...

  6. 一个Flex 对话框的坑

    最近在项目中遇到一个问题,在Flex中使用Alert.show("this is content!", "title");发现对话框可以弹出来,但是文本始终不显 ...

  7. Kafka消费者APi

    Kafka客户端从集群中消费消息,并透明地处理kafka集群中出现故障服务器,透明地调节适应集群中变化的数据分区.也和服务器交互,平衡均衡消费者. public class KafkaConsumer ...

  8. DevExpress v18.1新版亮点——WPF篇(二)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载& ...

  9. DevExpress v17.2最新版帮助文档下载大全

    DevExpress v17.2.4帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...

  10. [转]数据库更新(Update语句)查询

    2011-03-27 10:40:11| 分类: Database |举报|字号 订阅原文出自:http://blog.csdn.net/ylnjust02/archive/2005/12/10/54 ...