[Spring实战系列]装配集合
Posted SunnyYoona
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Spring实战系列]装配集合相关的知识,希望对你有一定的参考价值。
当配置集合类型的Bean属性时,Spring 提供了4 种类型的集合配置元素。
集合元素 | 用途 |
<list> | 装配list类型的值,允许重复。 |
<set> | 装配set类型的值,不允许重复。 |
<map> | 装配map类型的值,名称和值可以使任意类型。 |
<props> | 装配properties类型的值,名称和值必须都是String类型。 |
当装配类型为数组或者java.util.Collection 任意实现的属性时,<list>和<set> 元素非常有用。我们很快就会看到,其实属性实际定义的集合类型与选择<list> 或者<set> 元素没有任何关系。如果属性为任意的java.util.Collection类型时,这两个配置元素在使用时几乎可以完全互换。
<map> 和<props> 这两个元素分别对应java.util.Map 和java.util.Properties。当我们需要由键- 值对组成的集合时,这两种配置元素非常有用。关键区别在于,<props> 要求键和值都必须为String 类型,而<map> 允许键和值可以是任意类型。
1. 装配Set和List
为了展示在Spring 中装配集合,让我们使用如下书店的例子。
package com.sjf.bean;
/**
* book实体类
* @author Administrator
*
*/
public class Book {
private String name;
private String author;
private double price;
public void setName(String name) {
this.name = name;
}
public void setAuthor(String author) {
this.author = author;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "name:" + name + " author:" + author + " price:" + price;
}
}
package com.sjf.bean;
import java.util.Collection;
/**
* Bookstore实体类
* @author Administrator
*
*/
public class Bookstore {
private String name;
private Collection<Book> books;
public void setName(String name) {
this.name = name;
}
public void setBooks(Collection<Book> books) {
this.books = books;
}
public void listAllBook(){
System.out.println("[" + name + "]共存储一下书籍:");
for(Book book : books){
System.out.println(book.toString());
}//for
}
}
在这里最重要的是通过setBooks() 方法注入书籍(book)的集合。
让我们使用<list> 配置元素,为Bookstore赋予所拥有的书籍集合:
<bean id = "china-pub" class = "com.sjf.bean.Bookstore">
<property name="name" value="china-pub"/>
<property name="books">
<list>
<ref bean="spring"/>
<ref bean="spark"/>
<ref bean="java"/>
</list>
</property>
</bean>
<bean id = "spring" class = "com.sjf.bean.Book">
<property name="name" value = "Spring实战"/>
<property name="author" value="Craig Walls"/>
<property name="price" value="59.00"/>
</bean>
<bean id = "spark" class = "com.sjf.bean.Book">
<property name="name" value = "Spark大数据处理技术"/>
<property name="author" value="夏俊鸾"/>
<property name="price" value="65.00"/>
</bean>
<bean id = "java" class = "com.sjf.bean.Book">
<property name="name" value = "写给大忙人看的Java SE 8"/>
<property name="author" value="Cay S. Horstmann"/>
<property name="price" value="59.00"/>
</bean>
<list> 元素包含一个或多个值。这里的<ref> 元素用来定义Spring 上下文中的其他Bean 引用。当然还可以使用其他的Spring 设值元素作为<list> 的成员,包括<value>、<bean> 和<null/>。实际上,<list> 可
以上是关于[Spring实战系列]装配集合的主要内容,如果未能解决你的问题,请参考以下文章