Spring_09_注入集合

2018-07-16  本文已影响15人  有_味

注入集合

 你已经看到了如何使用value属性来配置基本数据类型和在你的bean配置文件中使用标签ref属性来配置对象引用.

如果你项传递多个值,如Java Collection 类型 List , Set , Map , Properties 应该怎么做呢. 为了处理这种情况 , Spring 提供了四种类型的集合的配置元素,如下所示:

元素 描述
<list> 它有助于练习,如注入一系列值,允许重复.
<set> 它有助于连线一组值,但不能重复.
<map> 它可以用来注入名称 - 键值对的集合,其中名称和值可以是任何类型.
<props> 它可以用来注入名称 - 键值对结合,其中名称和值都是字符串类型

你可以使用或来连接任何java.util.Collection的实现或数组

你会遇到两种情况(a)传递集合中直接(b)传递一个bean的引用作为集合的元素.

例子

步骤 描述
1 创建一个名称为 SpringExample 的项目,并且在创建项目的 c src 文件夹中创建一个包 com.tutorialspoint
2 使用 Add External JARs 选项,添加所需的 Spring 库,解释见 Spring Hello World Example 章节。 option as explained in the chapter.
3 在 com.tutorialspoint 包中创建Java类 TextEditor 、 SpellChecker 和 MainApp.
4 在src 文件夹中创建 Beans 配置文件 Beans.xml 。
5 最后一步是创建的所有Java文件和Bean配置文件的内容,并运行应用程序,解释如下所示。

JavaCollection.java

package com.tutorialspoint;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class JavaCollection {
    List addressList;
    Set addressSet;
    Map addressMap;
    Properties addressProp;

    public List getAddressList() {
        System.out.println("List Elements :" + addressList);
        return addressList;
    }

    public void setAddressList(List addressList) {
        this.addressList = addressList;
    }

    public Set getAddressSet() {
        System.out.println("Set Elements :" + addressSet);
        return addressSet;
    }

    public void setAddressSet(Set addressSet) {
        this.addressSet = addressSet;
    }

    public Map getAddressMap() {
        System.out.println("Map Elements :" + addressMap);
        return addressMap;
    }

    public void setAddressMap(Map addressMap) {
        this.addressMap = addressMap;
    }

    public Properties getAddressProp() {
        System.out.println("Property Elements :" + addressProp);
        return addressProp;
    }

    public void setAddressProp(Properties addressProp) {
        this.addressProp = addressProp;
    }

}

MainApp.java

package com.tutorialspoint;

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

<?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">

    <context:annotation-config />

    <bean id="javaCollection" class="com.tutorialspoint.JavaCollection">
        <property name="addressList">
            <list>
                <value>india</value>
                <value>pakistan</value>
                <value>usa</value>
                <value>usa</value>
            </list>
        </property>

        <property name="addressSet">
            <set>
                <value>india</value>
                <value>pakistan</value>
                <value>usa</value>
                <value>usa</value>
            </set>
        </property>

        <property name="addressMap">
            <map>
                <entry key="1" value="INDIA" />
                <entry key="2" value="Pakistan" />
                <entry key="3" value="USA" />
                <entry key="4" value="USA" />
            </map>
        </property>
        <property name="addressProp">
            <props>
                <prop key="one">INDIA</prop>
                <prop key="two">Pakistan</prop>
                <prop key="three">USA</prop>
                <prop key="four">USA</prop>
            </props>
        </property>
    </bean>
</beans>

测试跑通之后的结果:

List Elements :[india, pakistan, usa, usa]
Set Elements :[india, pakistan, usa]
Map Elements :{1=INDIA, 2=Pakistan, 3=USA, 4=USA}
Property Elements :{two=Pakistan, one=INDIA, three=USA, four=USA}

个人小结:其实和上面的差不多,都是创建对象,然后注入,再取出的操作.

上一篇下一篇

猜你喜欢

热点阅读