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. java web 学习 --第三天(Java三级考试)

    第二天的学习内容这里:http://www.cnblogs.com/tobecrazy/p/3446646.html Jsp中的动作标签 <jsp:include> 实现动态包含,在一个文 ...

  2. java wait()和notify()、notifyAll()

    图见<JAVA并发编程的艺术>P98-101 这三个方法都是java.lang.Object的方法,用于协调多个线程对共享数据的存取,必须在synchronized语句块中使用!这三个方法 ...

  3. ABAP 通过视图取数到内表函数

    CALL FUNCTION 'VIEW_GET_DATA'     EXPORTING       view_name = 'V_TVBUR'     TABLES       data      = ...

  4. 【STL】重载运算符

    重载运算符 为什么要重载运算符: C++中预定义的运算符的操作对象只能是基本数据类型.但实际上,对于许多用户自定义类型(例如结构体),也需要类似的运算操作.这时就必须在C++中重新定义这些运算符,赋予 ...

  5. 让ar执行queryall和queryrow方法返回数组

    让ar执行queryall和queryrow方法返回数组 <?phpnamespace common\components;use \CActiveRecord;use \Yii;use \CD ...

  6. Hibernate单向一对多对象关系模型映射

    1 hibernate 的对象关系映射 Orm: 类-----表 属性------字段 对象------记录 表:在数据库中存在主外键的关系,反向工厂类是由表生成,在由表生成类的时候,类和类之间存在者 ...

  7. 关闭Eclipse的控制台console自动跳出

    一.背景 在eclipse中进行开发,尤其是在后台有项目运行的时候,当有log或者错误需要打印到console中时,控制台就会被自动弹出,恰好这时候你又在编写代码,就会感觉瞬间想杀人,下面我们就来分享 ...

  8. iOS 动态计算文本内容的高度

    关于ios 下动态计算文本内容的高度,经过查阅和网上搜素,现在看到的有以下几种方法: 1. //  获取字符串的大小  ios6 - (CGSize)getStringRect_:(NSString* ...

  9. CSS3混合模式background-blend-mode

    注意:background属性中的背景图片和颜色混合,只能在一个background属性中. 属性值: background-blend-mode: normal; //正常 background-b ...

  10. 无废话ExtJs 入门教程三[窗体:Window组件]

    无废话ExtJs 入门教程三[窗体:Window组件] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3 ...