你已经看到了如何使用bean配置文件中的标记的ref属性使用值属性和对象引用来配置基本数据类型。这两种情况都涉及将单数值传递给bean。
现在,如果要传递像Java集合类型(如List,Set,Map和Properties)的多个值,该怎么办?为了处理这种情况,Spring提供了四种类型的集合配置元素,如下所示 -
元素和说明
1
这有助于接线,即注入一个值列表,允许重复。
2
这有助于连线一组值,但没有任何重复。
3
这可以用于注入名称和值对可以是任何类型的集合。
4
这可以用于注入名称和值均为字符串的名称 - 值对集合。
您可以使用或来连接java.util.Collection或数组的任何实现。
您将遇到两种情况(a)传递集合的直接值和(b)将bean的引用作为集合元素之一传递。
例
让我们使用Eclipse IDE,并采取以下步骤创建一个Spring应用程序 -
描述
1
创建一个名称为SpringExample的项目,并在创建的项目的src文件夹下创建一个com.breakyizhan包。
2
按照Spring Hello World Example章节的介绍,使用Add External JARs选项添加所需的Spring库。
3
在com.breakyizhan包下创建Java类JavaCollection和MainApp。
4
在src文件夹下创建Beans配置文件Beans.xml。
5
最后一步是创建所有Java文件和Bean配置文件的内容并按照下面的说明运行应用程序。
这里是JavaCollection.java文件的内容-
package com.breakyizhan;
import java.util.*;
public class JavaCollection {
List addressList;
Set addressSet;
Map addressMap;
Properties addressProp;
// a setter method to set List
public void setAddressList(List addressList) {
this.addressList = addressList;
}
// prints and returns all the elements of the list.
public List getAddressList() {
System.out.println("List Elements :" + addressList);
return addressList;
}
// a setter method to set Set
public void setAddressSet(Set addressSet) {
this.addressSet = addressSet;
}
// prints and returns all the elements of the Set.
public Set getAddressSet() {
System.out.println("Set Elements :" + addressSet);
return addressSet;
}
// a setter method to set Map
public void setAddressMap(Map addressMap) {
this.addressMap = addressMap;
}
// prints and returns all the elements of the Map.
public Map getAddressMap() {
System.out.println("Map Elements :" + addressMap);
return addressMap;
}
// a setter method to set Property
public void setAddressProp(Properties addressProp) {
this.addressProp = addressProp;
}
// prints and returns all the elements of the Property.
public Properties getAddressProp() {
System.out.println("Property Elements :" + addressProp);
return addressProp;
}
}
以下是MainApp.java文件的内容-
package com.breakyizhan;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
JavaCollection jc=(JavaCollection)context.getBean("javaCollection");
jc.getAddressList();
jc.getAddressSet();
jc.getAddressMap();
jc.getAddressProp();
}
}
以下是配置文件Beans.xml,它具有所有类型集合的配置 -
INDIA
Pakistan
USA
USA
INDIA
Pakistan
USA
USA
INDIA
INDIA
Pakistan
USA
USA
一旦完成创建源和bean配置文件,让我们运行该应用程序。如果你的应用程序一切正常,它会打印下面的消息 -
List Elements :[INDIA, Pakistan, USA, USA]
Set Elements :[INDIA, Pakistan, USA]
ap Elements :{1 = INDIA, 2 = Pakistan, 3 = USA, 4 = USA}
Property Elements :{two = Pakistan, one = INDIA, three = USA, four = USA}
注入Bean引用
以下Bean定义将帮助您了解如何将bean引用注入为集合元素之一。即使您可以将引用和值全部混合在一起,如以下代码片段所示 -
Pakistan
Pakistan
要使用上面的bean定义,你需要定义你的setter方法,以便它们也能够处理引用。
注入空和空字符串值
如果你需要传递一个空字符串作为值,那么你可以通过它如下 -
前面的示例等同于Java代码:exampleBean.setEmail(“”)
如果你需要传递一个NULL值,那么你可以通过它如下 -
前面的示例等同于Java代码:exampleBean.setEmail(null)