Dao层代码:

 package com.it.dao;

 public interface SayHell {
public void sayHello();
}

Dao的Impl实现层:

 package com.it.dao.impl;

 import java.util.List;
import java.util.Map; import com.it.dao.SayHell; /**
* Spring如何知道setter方法?如何将值注入进去的呢?其实方法名是要遵守约定的,setter注入的方法名要遵循“JavaBean getter/setter 方法命名约定”:
*
JavaBean:是本质就是一个POJO类,但具有一下限制:
该类必须要有公共的无参构造器,如public HelloImpl4() {};
属性为private访问级别,不建议public,如private String message;
属性必要时通过一组setter(修改器)和getter(访问器)方法来访问;
setter方法,以“set” 开头,后跟首字母大写的属性名,如“setMesssage”,简单属性一般只有一个方法参数,方法返回值通常为“void”;
getter方法,一般属性以“get”开头,对于boolean类型一般以“is”开头,后跟首字母大写的属性名,如“getMesssage”,“isOk”;
还有一些其他特殊情况,比如属性有连续两个大写字母开头,如“URL”,则setter/getter方法为:“setURL”和“getURL”,其他一些特殊情况请参看“Java Bean”命名规范。
* @return
*/
public class SayHelloImpl4 implements SayHell { private List<String> listValue; private Map<String,Integer> mapValue; private int fistBleed; private Map<String,SayHelloImpl4> firstMap; public Map<String, SayHelloImpl4> getFirstMap() {
return firstMap;
} public void setFirstMap(Map<String, SayHelloImpl4> firstMap) {
this.firstMap = firstMap;
} public int getFistBleed() {
return fistBleed;
} public void setFistBleed(int fistBleed) {
this.fistBleed = fistBleed;
} public List<String> getListValue() {
return listValue;
} public void setListValue(List<String> listValue) {
this.listValue = listValue;
} public Map<String, Integer> getMapValue() {
return mapValue;
} public void setMapValue(Map<String, Integer> mapValue) {
this.mapValue = mapValue;
} @Override
public void sayHello() {
int i=1;
for (String string : listValue) {
System.out.println(i+"、"+string);
i++;
} } public void sayMapGood(){
int size = mapValue.size();
if(size!=0){
for(int a=1; a<=size ;a++){
System.out.println(a+"、"+mapValue.get(String.valueOf(a)));
}
}
} public void sayMapGood2(){
int size = firstMap.size();
if(size!=0){
System.out.println(firstMap.get("1").fistBleed);
}
} }

配置文件setList.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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 测试1 使用set注入方法 注入集合类型 Spring不仅能注入简单类型数据,还能注入集合(Collection、无序集合Set、有序集合List)类型、数组(Array)类型、字典(Map)类型数据、Properties类型数据 -->
<bean id="listBean" class="com.it.dao.impl.SayHelloImpl4">
<property name="listValue">
<list><!-- <list value-type="java.lang.String"> 如果是set集合就是用<set>标签,可以在此指定泛型,若不指定,则默认是String类型的 -->
<value>德玛西亚</value>
<value>艾欧尼亚</value>
<value>暗影岛</value>
<value>德莱文明</value>
</list>
</property>
</bean> <!-- Spring容器目前能对各种基本类型把配置的String参数转换为需要的类型,
如果转换出错,将抛出相应的异常,
默认的<value>中间的值均是String类型的
Spring类型转换系统对于boolean类型进行了容错处理,除了可以使用“true/false”标准的Java值进行注入,还能使用“yes/no”、“on/off”、“1/0”来代表“真/假” --> <!-- 测试2 使用set注入方法 map -->
<bean id="mapBean" class="com.it.dao.impl.SayHelloImpl4">
<property name="mapValue">
<map key-type="java.lang.String" value-type="java.lang.Integer">
<entry>
<key>
<value>1</value>
</key>
<value>
123
</value>
</entry>
<entry key="2" value="456"></entry>
<entry key="3" value="789"></entry>
</map>
</property>
</bean> <!-- 测试3 一个bean注入到另一个bean中 -->
<bean id="intBean" class="com.it.dao.impl.SayHelloImpl4">
<property name="fistBleed">
<value type="java.lang.Integer">998</value>
</property>
</bean> <bean id="mapBean2" class="com.it.dao.impl.SayHelloImpl4">
<property name="firstMap">
<map key-type="java.lang.String" value-type="com.it.test.SayHelloImpl4">
<entry>
<key>
<value>1</value>
</key>
<ref bean="intBean"/> </entry>
</map>
</property>
</bean> </beans>

实现层 测试类:SayHelloTest4.java

 package com.it.test;

 import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext; import com.it.dao.SayHell;
import com.it.dao.impl.SayHelloImpl4; public class SayHelloTest4 { ApplicationContext applicationContext =new FileSystemXmlApplicationContext("resources/setList.xml");
@Test
public void testListSet(){
SayHell sayHell = applicationContext.getBean("listBean",SayHell.class);
sayHell.sayHello(); SayHelloImpl4 sayHell4 = (SayHelloImpl4) applicationContext.getBean("mapBean");
sayHell4.sayMapGood(); SayHelloImpl4 sayHell42 = (SayHelloImpl4) applicationContext.getBean("mapBean2");
sayHell42.sayMapGood2();
}
}

实现效果:

【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean的更多相关文章

  1. Java集合的实现细节—Set集合和Map集合

    Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...

  2. 【读书笔记】【深入理解ES6】#7-Set集合和Map集合

    ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...

  3. 编写Java程序,使用List集合和Map集合输出 市和区

    如图: 代码: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java ...

  4. Java List集合和Map集合的综合应用

    public static void main(String[] args) { //--------------------------------------------------------- ...

  5. spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

    spring  在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

  6. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  7. java基础33 Set集合下的HashSet集合和TreeSet集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  8. java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合

    //定义一个100元素的集合,包含A-Z List<String> list = new LinkedList<>(); for (int i =0;i<100;i++) ...

  9. Collection集合和Collection集合常用功能

    Collection集合常用功能 方法: boolean add(E e); 向集合中添加元素 boolean remove(E e); 删除集合中的某个元素 void clear(); 清空集合所有 ...

随机推荐

  1. Silverlight动画之 Animation Easing

    使用Animation Easing函数可以创造出更具有动感的动画.对比下面两个动画. 普通线性动画: <Storyboard x:Name="growStoryboard" ...

  2. 打开VS2012的创建单元测试功能

    在VS2010中,在类中点击右键,有一个创建创建单元测试命令,可以很方便的生成单元测试项目和代码.但不知道为什么VS2012反而没有这个功能. 网上搜了一下,好在这个功能是可以通过配置打来的. 传送门 ...

  3. 【leetcode】Next Permutation(middle)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  4. NCPC 2015 October 10, 2015 Problem D

    NCPC 2015Problem DDisastrous DowntimeProblem ID: downtimeClaus Rebler, cc-by-saYou’re investigating ...

  5. 108. Convert Sorted Array to Binary Search Tree

    题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST ...

  6. October 3rd 2016 Week 41st Monday

    Better to light one candle than to curse the darkness. 与其诅咒黑暗,不如燃起蜡烛. Sitting in the darkness and wa ...

  7. poj1988(并查集)

    题目链接:http://poj.org/problem?id=1988 题意:有n个箱子,初始时每个箱子单独为一列: 接下来有p行输入,M, x, y 或者 C, x: 对于M,x,y:表示将x箱子所 ...

  8. nyoj1007(euler 函数)

    euler(x)公式能计算小于等于x的并且和x互质的数的个数: 我们再看一下如何求小于等于n的和n互质的数的和, 我们用sum(n)表示: 若gcd(x, a)=1,则有gcd(x, x-a)=1: ...

  9. 命名空间 - PHP笔记

    转: 概述 命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念,比如在操作系统中,目录用来将相关文件分组,对于目录中的文件来说,目录就扮演了命名空间的角色.这个原理应用到程序设计领域就是命 ...

  10. Cocoapods 更新后 使用

    platform:ios,'8.0'target 'APPNAME' do pod 'SMSSDK' pod 'MBProgressHUD', '0.9.1' pod 'AFNetworking', ...