【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(); 清空集合所有 ...
随机推荐
- 数据结构-链表实现删除全部特定元素x
链表节点类定义: template <class T> class SingleList; template <class T> class Node { private: T ...
- .NET微信公众号开发-4.0公众号消息处理
一.前言 微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post的xml数据有所差别,在处理消息之前,我们 ...
- UDP-C#代码
新建两个控制台应用程序,一个是服务端,一个是客户端. 1.服务端代码 using System; using System.Collections.Generic; using System.Linq ...
- [Android Pro] CountDownTimer倒计时
定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法),下面的例子显示在一个文本框中显示一个30s倒计时: new CountdownTimer(3 ...
- abcd
[问题描述]有4个长度为N的数组a,b,c,d.现在需要你选择N个数构成数组e,数组e满足a[i]≤e[i]≤b[i]以及 Σe[i]*c[i]=0,并且使得Σe[i]*d[i]最大.[输入格式]输入 ...
- 借教室(codevs 1217)
1217 借教室 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- C 工厂模式 还有其他的模式
http://blog.csdn.net/feixiaoxing/article/details/7081243
- LeetCode : 287. Find the Duplicate Number
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAACRAAAAMMCAYAAAAhQhmZAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVlw ...
- tableView 局部刷新
//一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2]; [tableview reloadSections:in ...
- 早上3:30左右起来发现时候电脑在一致叫唤就是一个usb的接口可能是鼠标
然后看了下也没有网络了,早上起来就打了一个电话给网管,就开通了.是没有及时开通.