Spring注入集合

开课吧开课吧锤锤2021-08-09 11:49

如果需要传递类似于JavaCollection类型的值,例如List、Set、Map和properties,可以使用Spring提供的集合配置标签,如下表所示。

标签 说明
<list> 用于注入 list 类型的值,允许重复
<set> 用于注入 set 类型的值,不允许重复
<map> 用于注入 key-value 的集合,其中 key-value 可以是任意类型
<props> 用于注入 key-value 的集合,其中 key-value 都是字符串类型

示例  

下面使用EclipseIDE演示如何注入集合,步骤如下:  

1、创建SpringDemo项目,并在src目录下创建net.kaikeba包。  

2、添加相应的jar包。  

3、在net.kaikeba包下创建JavaCollection、Man和MainApp类。  

4、在src目录下创建Spring配置文件Beans.xml。  

5、运行SpringDemo项目。  

JavaCollection类代码如下。  

package net.kaikeba;
import java.util.*;
public class JavaCollection {
    List manList;
    Set manSet;
    Map manMap;
    Properties manProp;
    public void setManList(List manList) {
        this.manList = manList;
    }
    public List getManList() {
        System.out.println("List Elements :" + manList);
        return manList;
    }
    public void setManSet(Set manSet) {
        this.manSet = manSet;
    }
    public Set getManSet() {
        System.out.println("Set Elements :" + manSet);
        return manSet;
    }
    public void setManMap(Map manMap) {
        this.manMap = manMap;
    }
    public Map getManMap() {
        System.out.println("Map Elements :" + manMap);
        return manMap;
    }
    public void setManProp(Properties manProp) {
        this.manProp = manProp;
    }
    public Properties getManProp() {
        System.out.println("Property Elements :" + manProp);
        return manProp;
    }
}

MainApp类代码如下。  

package net.kaikeba;
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.getManList();
        jc.getManSet();
        jc.getManMap();
        jc.getManProp();
    }
}

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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <bean id="javaCollection" class="https://www.kaikeba.com/">
        <property name="manList">
            <list>
                <value>开课吧</value>
                <value>百度</value>
                <value>开课吧</value>
                <value>开课吧</value>
            </list>
        </property>
        <property name="manSet">
            <set>
                <value>开课吧</value>
                <value>百度</value>
                <value>开课吧</value>
                <value>开课吧</value>
            </set>
        </property>
        <property name="manMap">
            <map>
                <entry key="1" value="开课吧" />
                <entry key="2" value="百度" />
                <entry key="3" value="开课吧" />
                <entry key="4" value="开课吧" />
            </map>
        </property>
        <property name="manProp">
            <props>
                <prop key="one">开课吧</prop>
                <prop key="one">开课吧</prop>
                <prop key="two">百度</prop>
                <prop key="three">开课吧</prop>
                <prop key="four">开课吧</prop>
            </props>
        </property>
    </bean>
</beans>

运行结果如下。  

List Elements :[开课吧, 百度, 开课吧, 开课吧]
Set Elements :[开课吧, 百度, 开课吧]
Map Elements :{1=开课吧, 2=百度, 3=开课吧, 4=开课吧}
Property Elements :{two=百度, one=开课吧, three=开课吧, four=开课吧}

注入Bean引用  

也可以在集合元素中注入Bean,如下所示。  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <bean id="..." class="...">
        <property name="manList">
            <list>
                <ref bean="man1" />
                <ref bean="man2" />
                <value>开课吧</value>
            </list>
        </property>
        <property name="manSet">
            <set>
                <ref bean="man1" />
                <ref bean="man2" />
                <value>开课吧</value>
            </set>
        </property>
        <property name="manMap">
            <map>
                <entry key="one" value="开课吧" />
                <entry key="two" value-ref="man1" />
                <entry key="three" value-ref="man2" />
            </map>
        </property>
    </bean>
</beans>

注入null和空字符串的值  

Spring会把属性的空参数直接当成空字符串来处理,如果您需要传递一个空字符串值,可以这样写:  

<bean id = "..." class = "exampleBean">
    <property name = "email" value = ""/>
</bean>

等效于以下代码  

exampleBean.setEmail("")

如果需要传递NULL值,<null/>元素用来处理Null值。  

<bean id = "..." class = "exampleBean">
    <property name = "email"><null/></property>
</bean>

等效于以下代码  

exampleBean.setEmail(null)

以上就是开课吧广场小编为大家整理发布的“Spring注入集合”一文,更多Java教程相关内容尽在开课吧广场Java教程频道!  

Spring注入集合

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享