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. Selenium webdriver 操作日历控件

    一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如: 但是,有的日期控件是readonly的 比如1 ...

  2. MySQL字符集转换引发插入乱码问题

    根据http://www.cnblogs.com/cchust/p/4601536.html进行验证测试 问题背景 在mysql上面执行一条普通的insert语句,结果报错: Incorrect st ...

  3. ffmpeg-20160510-git-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  4. 【leetcode】Count and Say (easy)

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  5. NEFU 505 超级红与黑 (高斯消元)

    题目链接 中文题,改下模板构造一下就能过了,数据有点水,不过还是需要自由变元枚举的. #include <iostream> #include <cstdio> #includ ...

  6. IIS配置默认文档

    我们在配置IIS的默认文档时是在这里配置的,如下图: 但是,有可能我们的根目录下没有这个文件,而且我们网站运行的时候也不想访问根目录下的这个文件,而是要访问其他文件夹下的某一个文件,比如网站运行的时候 ...

  7. Mac怎么读写NTFS格式?Mac读写NTFS格式硬盘教程

    我们都知道NTFS 格式的 Windows 硬盘在Mac OS X系统下只能读取不能写入,这一问题一直困扰着很多新老Mac 用户,一般的的解决办法就是安装 NTFS 插件来让 OS X 支持 NTFS ...

  8. windows服务 - C# U盘升级

    1.左侧工具栏里有Timer控件,但是如果调用的是系统时间,就需要添加System.timer.timer空间下的控件.   2.服务编写之后,还不能由SCM(服务控制管理器)进行管理,需要给该服务添 ...

  9. MVC – 8.Razor 布局

    8.1.@RenderBody() 8.2.多个"占位符":@RenderSection() 8.3.js合并 @Scripts.Render("~/bundles/js ...

  10. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...