• Spring-注入集合


    注入集合

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

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

    1. <list> 注入一列值,允许重复
    2. <set> 有助于连线一组值,但不能重复
    3. <map> 可以用来注入名称-值对的集合,其中名称和值可以是任何类型
    4. <props> 可以用来注入名称-值对的集合,其中名称和值都是字符串类型

     JavaCollection.java文件的内容:

    package com.tuorialsponit;
    import java.util.List;
    import java.util.Set;
    import java.util.Map;
    import java.util.Properties;
    
    public class JavaCollection {
        private List addressList;
        private Set addressSet;
        private Map addressMap;
        private Properties addressProp;
        public List getAddressList() {
            return addressList;
        }
        public void setAddressList(List addressList) {
            this.addressList = addressList;
        }
        public Set getAddressSet() {
            return addressSet;
        }
        public void setAddressSet(Set addressSet) {
            this.addressSet = addressSet;
        }
        public Map getAddressMap() {
            return addressMap;
        }
        public void setAddressMap(Map addressMap) {
            this.addressMap = addressMap;
        }
        public Properties getAddressProp() {
            return addressProp;
        }
        public void setAddressProp(Properties addressProp) {
            this.addressProp = addressProp;
        }
    }

    下面是bean.xml中的内容:

    <bean id="javaCollection" class="com.tuorialsponit.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>
    
          <!-- results in a setAddressMap(java.util.Map) call -->
          <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>

    MainApp.java中的内容:

    public class MainApp {
        public static void main(String[] args){
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            JavaCollection jc = (JavaCollection) context.getBean("javaCollection");
            System.out.println(jc.getAddressList());
            System.out.println(jc.getAddressSet());
            System.out.println(jc.getAddressMap());
            System.out.println(jc.getAddressProp());
        }
    }

    运行结果:

    注入Bean引用

    下面的Bean定义将帮助你理解如何注入bean的引用作为集合元素。甚至你可以将引用和值混合在一起,如下所示:

    <property name="addressList">
                 <list>
                 <ref bean="helloIndia"/>
                 <value>INDIA</value>
                <value>Pakistan</value>
                <value>USA</value>
                <value>USA</value>
                 </list>
     </property>
    
    <bean id="helloIndia" class="com.tuorialsponit.HelloIndia" parent="beanTemplate">
             <property name="message1" value="hello India"></property>
             <property name="message3" value="Namaste India"></property>
     </bean>

    为了使用上面的bean定义,你需要定义setter方法,它们应该也是能够用这种方式处理引用。

    注入null和空字符串的值

    如果你需要传递一个空字符串作为值,那么可以像如下方式这样传递它:

    <bean id="helloIndia" class="com.tuorialsponit.HelloIndia" parent="beanTemplate">
             <property name="message1" value="hello India"></property>
             <property name="message3" value=""></property>
     </bean>

    如果你需要传递一个NULL值,那么你可以传递它,如下所示:

    <bean id="helloIndia" class="com.tuorialsponit.HelloIndia" parent="beanTemplate">
             <property name="message1" value="hello India"></property>
             <property name="message3"><null/></property>
     </bean>
  • 相关阅读:
    mycat实例(1)
    Java连接Oracle数据库的示例代码
    文本处理grep命令
    回调函数
    算法基础--快排序,堆排序,归并排序
    c++ 中double与string之间的转换,char *
    c++ 类型转换
    allocator class
    csapp读书笔记-并发编程
    树的遍历-递归方法,非递归方法
  • 原文地址:https://www.cnblogs.com/fangpengchengbupter/p/7818776.html
Copyright © 2020-2023  润新知