【Spring实战】—— 7 复杂集合类型的注入
时间:2022-04-22
本文章向大家介绍【Spring实战】—— 7 复杂集合类型的注入,主要内容包括Bean的实现类、Spring的配置文件如下、获取Bean实例并使用、执行结果:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
之前讲解了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++
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释