美文网首页
Spring_09_注入集合

Spring_09_注入集合

作者: 有_味 | 来源:发表于2018-07-16 21:53 被阅读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}
    
    

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

    相关文章

      网友评论

          本文标题:Spring_09_注入集合

          本文链接:https://www.haomeiwen.com/subject/kbdipftx.html