【Spring实战】—— 7 复杂集合类型的注入
之前讲解了Spring的基本类型和bean引用的注入,接下来学习一下复杂集合类型的注入,例如:List、Set、Map等。
对于程序员来说,掌握多种语言是基本的技能。
我们这里做了一个小例子,程序员们是一个Bean实例,而掌握的编程语言则是放入一个集合类型中进行注入。
简单的来说:
List是一种按照序号标识的集合,
Set与List相似但是元素不允许重复,
Map则是一种自定的键值对,键值都可以是任意的类型。
Bean的实现类
public class Programmer {
public Programmer(){}
//List 与 Set的注入
private Collection<Language> language;
public void setLanguage(Collection<Language> language){
this.language = language;
}
public void working(){
for(Language lang : language){
System.out.println("working on "+lang.using());
}
}
//Map的注入
private Map<String,Language> lang;
public void setLang(Map<String,Language> lang){
this.lang = lang;
}
public void studying(){
for(String key : lang.keySet()){
System.out.print(key+" : ");
Language language = lang.get(key);
System.out.println("studying on "+language.using());
}
}
}
其他需要的一些接口和实现类
public interface Language {
public String using();
}
public class Java implements Language{
public String using() {
return "Java";
}
}
public class Cpp implements Language{
public String using() {
return "C++";
}
}
Spring的配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="java" class="com.spring.test.collector.Java"/>
<bean id="cpp" class="com.spring.test.collector.Cpp"/>
<bean id="xingoo" class="com.spring.test.collector.Programmer">
<property name="language">
<list>
<ref bean="java"/>
<ref bean="cpp"/>
</list>
</property>
</bean>
<bean id="halo" class="com.spring.test.collector.Programmer">
<property name="language">
<set>
<ref bean="java"/>
</set>
</property>
</bean>
<bean id="zhang3" class="com.spring.test.collector.Programmer">
<property name="lang">
<map>
<!-- key键为String key-ref键为其他bean的引用 -->
<!-- value值为String value-ref值为其他bean的引用 -->
<entry key="java" value-ref="java"/>
<entry key="cpp" value-ref="cpp"/>
</map>
</property>
</bean>
</beans>
获取Bean实例并使用
public class test {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
System.out.println("[xingoo]");
Programmer programmer = (Programmer)ctx.getBean("xingoo");
programmer.working();
System.out.println("[halo]");
Programmer programmer1 = (Programmer)ctx.getBean("halo");
programmer1.working();
System.out.println("[zhang3]");
Programmer programmer2 = (Programmer)ctx.getBean("zhang3");
programmer2.studying();
}
}
执行结果:
[xingoo]
working on Java
working on C++
[halo]
working on Java
[zhang3]
java : studying on Java
cpp : studying on C++
【Spring实战】—— 7 复杂集合类型的注入的更多相关文章
- Spring 依赖注入(DI) 的三种方式 和 对集合类型的注入
// 分别省略了getter setter public class Student { private String name; private int age; private Teacher t ...
- (转)Spring如何装配各种集合类型的属性
http://blog.csdn.net/yerenyuan_pku/article/details/52858499 在前面我们已经会注入基本类型对象和其他bean,现在我们就来学习如何注入各种集合 ...
- Spring中集合类型属性注入
我们都知道如何去注入普通属性的值,非常简单,那么我们如何去注入开发中常见的集合类型的属性了,别急,往下看. 这里将介绍如何给Map list set Array Properties 这些属性注入值. ...
- 05Spring_Bean属性的集合类型的注入
- Redis从基础命令到实战之有序集合类型(SortedSet)
有序集合类型是Redis五种数据类型中最高级的.也是最复杂的类型.有序集合具有集合类型的特性,在其基础上给每个元素关联了一个分值,或称为权重,操作时既可以在添加元素时指定分值,也可以单独修改集合中某一 ...
- Spring.NET学习笔记8——集合类型的注入(基础篇)
1.基础类 public class Happy { public override string ToString() { return &q ...
- Spring框架xml配置文件 复杂类型属性注入——数组 list map properties DI dependency injection 依赖注入——属性值的注入依赖于建立的对象(堆空间)
Person类中的各种属性写法如下: package com.swift.person; import java.util.Arrays; import java.util.List; import ...
- Spring实战2:装配bean—依赖注入的本质
主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须 ...
- 《Web安全攻防渗透测试实战指南》 各类型 SQL注入 实验过程整理
Union注入 https://www.jianshu.com/p/8a11bf55aaee Boolean注入 https://www.jianshu.com/p/e4086f59812d 报错注入 ...
随机推荐
- HDU - 1300 简单DP
题意:买珠子的方案有两种,要么单独买,价钱为该种类数量+10乘上相应价格,要么多个种类的数量相加再+10乘上相应最高贵的价格买 坑点:排序会WA,喵喵喵? 为什么连续取就是dp的可行方案?我猜的.. ...
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
[转自] http://blog.csdn.net/majian_1987/article/details/8725197 LZ在项目中需要处理这样一个业务,每天都有终端设备上传GPS位置信息到服务端 ...
- PIE SDK元素事件的监听
1功能简介 元素在操作的过程中,如添加,删除,选中等操作都需要有事件的监听,PIE SDK支持对元素操作事件的监听,下面对元素事件的监听进行介绍. 2功能实现说明 2.1.1 实现思路及原理说明 第一 ...
- PIE SDK专题制图打开模板
1. 功能简介 在PIE SDK中,所有的制图元素.视图范围以及排版等都可以保存成一个模板,以供多次重复使用.使用时只需要打开该模板,加载相应数据,就可以直接出图了,省去了重复制作图幅的麻烦,方 ...
- 文献综述六:基于JS 技术的电子商品管理系统设计及实现
一.基本信息 标题:基于JS 技术的电子商品管理系统设计及实现 时间:2017 出版源:无线互联科技 文件分类:js技术的研究 二.研究背景 主要对Js下电商管理系统的设计及实现进行了探讨,利用软件工 ...
- git修改密码
1.Windows10下更换Git用户名或密码 https://jingyan.baidu.com/article/642c9d3435a6e9644a46f732.html
- hdu 2845——Beans——————【dp】
Beans Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Oracle 过程中变量赋值
create or replace function get_sal1(id employees.employee_id%type) return number is sal employees.sa ...
- 对while;do while;for三种循环语句的理解与区分。
while:先判断表达式的值,在表达式值为真的情况下执行循环语句,直到表达式值为假结束循环: while(循环条件) { 循环体. } do-while:先执行循环体语句一次,再判别表达式的值,在表达 ...
- C#学习基础(1)命名约定
c#语言规范建议使用特定大小写约定创建字标识符 Pascal 大小写 标识符中每个单词的首字母大写 用于类型名和成员名 例如:CarDeck,FirstName Camel 大小写 ...