前面的文章已经介绍了如何往bean里面注入原始类型和引用类型.我们使用bean元素的contructor-arg或property子

元素的value属性注入java原始类型;同理,我们可以使用bean元素的contructor-arg或property子元素的ref属性注入

java的引用类型.

但是至此为止,我们讲到的时候单个对象或原始值的注入.本节我们来讲解如何往bean中注入集合对象.spring中bean

元素的property和contructor-arg子元素可以包含以下四个子元素,用于集合类型的注入

元素 描述
<list> 用于注入List,允许有重复数据
<set> 用于注入set,不允许有重复数据
<map> 用于注入map映射
<props> 用于注入java Properties

上述四个元素既可以用来注入原始类型也可以用来注入引用类型.

这节内容其实很简单,下面直接上个例子.仔细看一遍例子程序,就能完全掌握集合元素的注入了.

1.创建包com.tutorialspoint.collection,并在包中新建InjectCollection.java、Hobby.java、Person.java,内容如下

InjectCollection.java如下:

package com.tutorialspoint.collection;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set; @SuppressWarnings("all")
public class InjectCollection { //用于演示包含原始数据的List的注入
private List<String> list_hobby_pri;
//用于演示包含引用类型的List的注入
private List<Hobby> list_hobby_ref;
//用于演示包含原始数据的Set的注入
private Set<String> set_hobby_pri;
//用于演示包含引用类型的Set的注入
private Set<Hobby> set_hobby_ref;
//用于演示包含原始数据的Map的注入
private Map<String,String> map_hobby_pri;
//用于演示包含引用数据的Map的注入
private Map<Person,Hobby> map_hobby_ref;
//用于演示property的注入
private Properties prop_hobby; public void setList_hobby_pri(List<String> list_hobby_pri) {
this.list_hobby_pri = list_hobby_pri;
}
public void setList_hobby_ref(List<Hobby> list_hobby_ref) {
this.list_hobby_ref = list_hobby_ref;
}
public void setSet_hobby_pri(Set<String> set_hobby_pri) {
this.set_hobby_pri = set_hobby_pri;
}
public void setSet_hobby_ref(Set<Hobby> set_hobby_ref) {
this.set_hobby_ref = set_hobby_ref;
}
public void setMap_hobby_pri(Map<String, String> map_hobby_pri) {
this.map_hobby_pri = map_hobby_pri;
}
public void setMap_hobby_ref(Map<Person, Hobby> map_hobby_ref) {
this.map_hobby_ref = map_hobby_ref;
}
public void setProp_hobby(Properties prop_hobby) {
this.prop_hobby = prop_hobby;
} public void print(){
System.out.println("list_hobby_pri: "+list_hobby_pri);
System.out.println("list_hobby_ref: "+list_hobby_ref);
System.out.println("set_hobby_pri: "+set_hobby_pri);
System.out.println("set_hobby_ref: "+set_hobby_ref);
System.out.println("map_hobby_pri: "+map_hobby_pri);
System.out.println("map_hobby_ref: "+map_hobby_ref);
System.out.println("prop_hobby: "+prop_hobby);
}
}

Hobby.java如下:

package com.tutorialspoint.collection;

public class Hobby {

}

Person.java 如下:

package com.tutorialspoint.collection;

public class Person {

}

2.在src目录下新建di_collection.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<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-3.0.xsd"> <!-- 定义三个Hobby实例 -->
<bean id="hobby1" class="com.tutorialspoint.collection.Hobby"></bean>
<bean id="hobby2" class="com.tutorialspoint.collection.Hobby"></bean>
<bean id="hobby3" class="com.tutorialspoint.collection.Hobby"></bean> <!-- 定义三个Person实例 -->
<bean id="person1" class="com.tutorialspoint.collection.Person"></bean>
<bean id="person2" class="com.tutorialspoint.collection.Person"></bean>
<bean id="person3" class="com.tutorialspoint.collection.Person"></bean> <!-- 下面示例了使用内部bean的方式注入spellChecker依赖项 -->
<bean id="injectCollection" class="com.tutorialspoint.collection.InjectCollection"> <!-- 包含原始类型List元素的注入 使用list元素的value子元素即可 -->
<property name="list_hobby_pri">
<list>
<value>basketball_list</value>
<value>reading_list</value>
<value>surfing_list</value>
</list>
</property> <!-- 包含引用类型的List元素的注入使用list元素的ref子元素即可 -->
<property name="list_hobby_ref">
<list>
<ref bean="hobby1"/>
<ref bean="hobby2"/>
<ref bean="hobby3"/>
</list>
</property> <!-- 包含原始类型的Set元素的注入使用set元素的value子元素即可 -->
<property name="set_hobby_pri">
<set>
<value>basketball_set</value>
<value>reading_set</value>
<value>surfing_set</value>
</set>
</property> <!-- 包含引用类型的Set元素的注入使用set元素的ref子元素即可 -->
<property name="set_hobby_ref">
<set>
<ref bean="hobby1"/>
<ref bean="hobby2"/>
<ref bean="hobby3"/>
</set>
</property> <!-- 包含原始类型的Map元素的注入使用map元素的entry子元素的key和value属性即可 -->
<property name="map_hobby_pri">
<map>
<entry key="person1_map" value="hobby1_map"></entry>
<entry key="person2_map" value="hobby2_map"></entry>
<entry key="person3_map" value="hobby3_map"></entry>
</map>
</property> <!-- 包含引用类型的Map元素的注入使用map元素的entry子元素的key-ref和value-ref属性即可 -->
<property name="map_hobby_ref">
<map>
<entry key-ref="person1" value-ref="hobby1"></entry>
<entry key-ref="person2" value-ref="hobby2"></entry>
<entry key-ref="person3" value-ref="hobby3"></entry>
</map>
</property> <!-- properties元素的注入 -->
<property name="prop_hobby">
<props>
<prop key="person1_prop">hobby1_prop</prop>
<prop key="person2_prop">hobby2_prop</prop>
<prop key="person3_prop">hobby3_prop</prop>
</props>
</property> </bean> </beans>

3.在包com.tutorialspoint.collection中新建MainApp.java,内容如下:

package com.tutorialspoint.collection;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("di_collection.xml");
InjectCollection ic = (InjectCollection)context.getBean("injectCollection");
ic.print();
}
}

4.运行程序,检查结果.

[译]14-spring 集合元素的注入的更多相关文章

  1. Spring中给Bean注入集合

    Spring中如果一个Bean里含有集合元素,需要给Bean里的集合元素注入元素时,可以采用如下方法,一个是构造器注入,一个是setter注入 JavaBean源代码: import java.uti ...

  2. 【Spring实战】—— 7 复杂集合类型的注入

    之前讲解了Spring的基本类型和bean引用的注入,接下来学习一下复杂集合类型的注入,例如:List.Set.Map等. 对于程序员来说,掌握多种语言是基本的技能. 我们这里做了一个小例子,程序员们 ...

  3. spring集合类型的setter注入的一个简单例子

    在项目中我们有时候会为集合类型设定一些默认的值,使用spring后,我们可以通过配置文件的配置,用setter方式为对象的集合属性提供一些默认值,下面就是一个简单的例子. 首先我们创建了一个名为Col ...

  4. spring集合类型注入

    spring集合类型注入 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUB ...

  5. Spring 集合注入

    Spring注入是spring框架的核心思想之一.在实际的开发中,我们经常会遇见这样一些类的注入,这些类中包含一些集合作为类的属性,那么要怎样想类中的集合注入数据呢?本文通过一个简单的示例向大家介绍一 ...

  6. Spring 依赖注入(DI) 的三种方式 和 对集合类型的注入

    // 分别省略了getter setter public class Student { private String name; private int age; private Teacher t ...

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

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

  8. Spring学习(三)——Spring中的依赖注入的方式

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

  9. Spring系列之依赖注入的方式

    一.依赖注入方式 对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象 ...

随机推荐

  1. httpclient使用head添加cookie

    最近在使用接口时候,我使用get请求时,需要携带登录态,所以在get请求的时候我需要在head里面把cookie给加上,添加方式get和post完全不一样 Post方式添加cookie httpPos ...

  2. Android(java)学习笔记71:Tab标签的使用

    1. 案例1---TabProject (1)首先是main.xml文件: <?xml version="1.0" encoding="utf-8"?&g ...

  3. 【CCPC-Wannafly Winter Camp Day3 (Div1) D】精简改良(状压DP)

    点此看题面 大致题意: 给你一张图,定义\(dis(i,j)\)为\(i\)与\(j\)的最短距离,现要求删去若干条边,使得图仍然联通,且\(\sum_{i=1}^n\sum_{j=i+1}^ndis ...

  4. centos6 yum 安装 install c++4.8 gcc4.8

    cd /etc/yum.repos.d wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo yum --enablerep ...

  5. 分类算法简介 基于R

    最近的关键字:分类算法,outlier detection, machine learning 简介: 此文将 k-means,decision tree,random forest,SVM(supp ...

  6. word中磅和mm的换算

    字号 磅 毫米数 初号 42 14.82 小初 36 12.70 一号 26 9.17 小一 24 8.47 二号 22 7.76 小二 18 6.35 三号 16 5.64 小三 15 5.29 四 ...

  7. 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列

    第46章     DCMI—OV5640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  8. java、javac -version不一致(java编译及运行环境不一致)的环境变量设置问题解决

    问题描述: 电脑上同时安装了JDK1.6与1.7  设置了环境变量JAVA_HOME为jdk1.6.0_21的安装目录,并且在PATH变量中加入了%JAVA_HOME%\bin,但在Windows命令 ...

  9. Python 初始—(多级字典)

    字典中 嵌套字典 如同json 对象, data={ "msg":{ “xxx.com”:["a","b"] } } data.values ...

  10. PXE自动化安装CentOS6/7

    服务器为centos7 安装前准备:关闭防火墙和SELINUX 虚拟机准备第二块网卡,设置主机模式,关闭虚拟机网络配置中主机模式的DHCP功能,并设置静态IP nmcli c a con-name e ...