下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties)。 支持4个主要的集合类型:
  • List – <list/>
  • Set – <set/>
  • Map – <map/>
  • Properties – <props/>

Spring beans

一个Customer对象,有四个集合属性。
package com.yiibai.common;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set; public class Customer
{
private List<Object> lists;
private Set<Object> sets;
private Map<Object, Object> maps;
private Properties pros; //...
}
在bean配置文件中不同的代码片段用来声明集合。

1. List示例

<property name="lists">
<list>
<value>1</value>
<ref bean="PersonBean" />
<bean class="com.yiibai.common.Person">
<property name="name" value="yiibaiList" />
<property name="address" value="Hainan" />
<property name="age" value="28" />
</bean>
</list>
</property>

2. Set示例

<property name="sets">
<set>
<value>1</value>
<ref bean="PersonBean" />
<bean class="com.yiibai.common.Person">
<property name="name" value="yiibaiSet" />
<property name="address" value="Hainan" />
<property name="age" value="28" />
</bean>
</set>
</property>

3. Map示例

<property name="maps">
<map>
<entry key="Key 1" value="1" />
<entry key="Key 2" value-ref="PersonBean" />
<entry key="Key 3">
<bean class="com.yiibai.common.Person">
<property name="name" value="yiibaiMap" />
<property name="address" value="Hainan" />
<property name="age" value="28" />
</bean>
</entry>
</map>
</property>

4. Properties示例

<property name="pros">
<props>
<prop key="admin">admin@yiibai.com</prop>
<prop key="support">support@yiibai.com</prop>
</props>
</property>
Spring完整的 bean 配置文件。

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="CustomerBean" class="com.yiibai.common.Customer"> <!-- java.util.List -->
<property name="lists">
<list>
<value>1</value>
<ref bean="PersonBean" />
<bean class="com.yiibai.common.Person">
<property name="name" value="yiibaiList" />
<property name="address" value="Hainan Haikou" />
<property name="age" value="28" />
</bean>
</list>
</property> <!-- java.util.Set -->
<property name="sets">
<set>
<value>1</value>
<ref bean="PersonBean" />
<bean class="com.yiibai.common.Person">
<property name="name" value="yiibaiSet" />
<property name="address" value="Hainan Haikou" />
<property name="age" value="28" />
</bean>
</set>
</property> <!-- java.util.Map -->
<property name="maps">
<map>
<entry key="Key 1" value="1" />
<entry key="Key 2" value-ref="PersonBean" />
<entry key="Key 3">
<bean class="com.yiibai.common.Person">
<property name="name" value="yiibaiMap" />
<property name="address" value="Hainan Haikou" />
<property name="age" value="28" />
</bean>
</entry>
</map>
</property> <!-- java.util.Properties -->
<property name="pros">
<props>
<prop key="admin">admin@yiibai.com</prop>
<prop key="support">support@yiibai.com</prop>
</props>
</property> </bean> <bean id="PersonBean" class="com.yiibai.common.Person">
<property name="name" value="yiibai1" />
<property name="address" value="Hainan Haikou 1" />
<property name="age" value="28" />
</bean> </beans>

执行程序:

package com.yiibai.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class App
{
public static void main( String[] args )
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Customer cust = (Customer)context.getBean("CustomerBean");
System.out.println(cust); }
}

输出


Customer [lists=[1, com.yiibai.common.Person@4e4ee70b, com.yiibai.common.Person@1e1867d2], sets=[1, com.yiibai.common.Person@4e4ee70b, com.yiibai.common.Person@52f644b4], maps={Key 1=1, Key 2=com.yiibai.common.Person@4e4ee70b, Key 3=com.yiibai.common.Person@54481b6d}, pros={admin=admin@yiibai.com, support=support@yiibai.com}]

 

Spring学习(八)-----Spring注入值到集合类型的例子的更多相关文章

  1. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  2. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  3. Spring学习(三)几种集合属性的注入方式

    1.前言 众所周知.java中不只有八大简单类型.还有一些集合类型.本文围绕集合类型的注入做一个总结. 2.项目骨架 3.过程 1.创建实体类AllCollectionType package com ...

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

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

  5. 一起学Spring之三种注入方式及集合类型注入

    本文主要讲解Spring开发中三种不同的注入方式,以及集合数据类型的注入,仅供学习分享使用,如有不足之处,还请指正. 概述 Spring的注入方式一共有三种,如下所示: 通过set属性进行注入,即通过 ...

  6. Spring学习(一)---依赖注入和控制反转

    Spring Spring是一个从实际开发中抽出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率. Spring为企业应用的开发提供 ...

  7. Spring为某个属性注入值或为某个方法的返回值

    项目中用到需要初始化一些数据,Spring提供了filed的值注入和method的返回值注入. 一.Field值的注入 filed值注入需要使用org.springframework.beans.fa ...

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

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

  9. Spring学习笔记——Spring依赖注入原理分析

    我们知道Spring的依赖注入有四种方式,各自是get/set方法注入.构造器注入.静态工厂方法注入.实例工厂方法注入 以下我们先分析下这几种注入方式 1.get/set方法注入 public cla ...

随机推荐

  1. Win32多线程之核心对象

    CreateThread()传回两个值,用以识别一个新的线程.第一个值是个Handle,  这也是CreateThread()的返回值,大部分与线程有关的API函数都需要它.第二个值是由lpThrea ...

  2. C#回调实现的一般过程

    C#回调实现的一般过程 C#的方法回调机制,是建立在委托基础之上的,下面给出它的典型实现过程. (一) 定义.声明回调 Delegate void DoSomeCallBack(type para); ...

  3. linux性能指标及分析工具

    一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%. 上 ...

  4. Token生成(转载)

    package main import ( "encoding/base64" "encoding/json" "log" "ne ...

  5. oracle的sys和system的默认密码

    oracle的sys和system默认密码system默认:manager sys默认:change_on_install使用PL/SQL Plus登录数据库时,system用户使用密码manager ...

  6. Java并发编程(十一)常用工具

    Java为开发提供了很多有用的工具类,这些工具类可以帮助我们更加高效的编写并发程序,本篇我们将介绍这些实用工具的用法. ThreadLocal ThreadLocal类用于解决多线程共享一个变量的问题 ...

  7. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  8. numpy.random.shuffle()与numpy.random.permutation()的区别

    参考API:https://docs.scipy.org/doc/numpy/reference/routines.random.html 1. numpy.random.shuffle()   AP ...

  9. Navicat 报错1251连接不成功Mysql

    使用Navicat 连接数据库时候出现1251错误,解决方法. 1.首先打开mysql.exe,然后输入密码(mysql.exe可以在安装的位置搜索一下) 2.输入ALTER USER 'root'@ ...

  10. SQL宽字节注入

    0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...