【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean
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的更多相关文章
- Java集合的实现细节—Set集合和Map集合
Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...
- 【读书笔记】【深入理解ES6】#7-Set集合和Map集合
ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...
- 编写Java程序,使用List集合和Map集合输出 市和区
如图: 代码: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java ...
- Java List集合和Map集合的综合应用
public static void main(String[] args) { //--------------------------------------------------------- ...
- spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property
spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- java基础33 Set集合下的HashSet集合和TreeSet集合
单例集合体系: ---------| collection 单例集合的根接口--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合 ...
- java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合
//定义一个100元素的集合,包含A-Z List<String> list = new LinkedList<>(); for (int i =0;i<100;i++) ...
- Collection集合和Collection集合常用功能
Collection集合常用功能 方法: boolean add(E e); 向集合中添加元素 boolean remove(E e); 删除集合中的某个元素 void clear(); 清空集合所有 ...
随机推荐
- ACM/ICPC 之 一道不太简单的DP面试题(Geeksforgeeks)
题面来源:geeksforgeeks/1993 题解:geeksforgeeks 题目简述:给一个m*n的矩阵,计算从(1,1)到(m,n)的所有不回退路径中,经过k次转向后的路径有多少条 输入T个样 ...
- 14. javacript高级程序设计-表单
1. 表单脚本 1.1 基础知识 <from>元素表示表单: l acceptCharset:服务器能处理的字符集 l action:接受请求的URL l elements:表单中所有控件 ...
- effective OC2.0 52阅读笔记(二 对象、消息、运行期)
第二章:对象.消息.运行期 6 理解属性这一概念 总结:OC解决硬编码偏移量问题的做法,一种方案是把实例变量当做一种存储偏移量所用的特殊变量,交由类对象保管,偏移量会在运行期查找,叫做稳固的“应用程序 ...
- Effective C++ -----条款28:避免返回handles指向对象内部成分
避免返回handles(包括reference.指针.迭代器)指向对象内部.遵守这个条款可增加封装性,帮助const成员函数的行为像个const,并将发生“虚吊号码牌”(dangling handle ...
- Divide and Conquer:Cable Master(POJ 1064)
缆绳大师 题目大意,把若干线段分成K份,求最大能分多长 二分法模型,C(x)就是题干的意思,在while那里做下文章就可以了,因为这个题目没有要求长度是整数,所以我们要不断二分才行,一般50-100次 ...
- 【python】多进程学习
来源:廖雪峰 讲解看来源吧 把例子记一下 1.用fork创建进程 import os print "Process (%s) start..." % os.getpid() pid ...
- php生成对象的研究
<?php abstract class E{ protected $name; function __construct($name){ $this->name = $name; } a ...
- objective-c数组
1 #pragma mark -----------数组的初始化方式-------------- 2 // insert code here... 3 // NSLo ...
- 基于Spring的可扩展Schema进行开发自定义配置标签支持
一.背景 最近和朋友一起想开发一个类似alibaba dubbo的功能的工具,其中就用到了基于Spring的可扩展Schema进行开发自定义配置标签支持,通过上网查资料自己写了一个demo.今天在这里 ...
- Linux将Shelll输出写入到文件
&> 以覆盖的方式,写入文件 &>> 将输出追加到文件 将命令的正确输出与错误输出都放入文件. /dev/null,垃圾箱. 将无用输出放入垃圾箱. 命令>& ...