集合属性

2019-02-17  本文已影响1人  极客_Ls

在Spring 中可以通过一组内置的 Xml 标签来配置集合属性
例如: <List> <map> <set>

java.util.List

配置 java.util.List 类型的属性,需要制定 <list> 标签,在标签里包含一些元素,这些标签可以通过 :

内部 Bean 配置
<bean id="user1" class="com.laishuai.bean.User">
        <property name="name" value="BMW"></property>
        <property name="age" value="30"></property>
        <property name="cars">
            <list>
                <bean name="car1" class="com.laishuai.bean.Car">
                    <property name="name" value="BWM"></property>
                    <property name="lenght" value="5"></property>
                    <property name="width" value="4"></property>
                </bean>
                <bean name="car2" class="com.laishuai.bean.Car">
                    <property name="name" value="Benz"></property>
                    <property name="lenght" value="5"></property>
                    <property name="width" value="4"></property>
                </bean>
            </list>
        </property>
    </bean>
引用外部 Bean
 <bean name="car1" class="com.laishuai.bean.Car">
    <property name="name" value="BWM"></property>
    <property name="lenght" value="5"></property>
    <property name="width" value="4">
</bean>
<bean name="car2" class="com.laishuai.bean.Car">
    <property name="name" value="Benz"></property>
    <property name="lenght" value="5"></property>
    <property name="width" value="4">
</bean>
              

<bean id="user1" class="com.laishuai.bean.User">
    <property name="name" value="BMW"></property>
    <property name="age" value="30"></property>
    <property name="cars">
        <list>
           <ref bean="car1">
           <ref bean="car2">
        </list>
    </property>
</bean>

Java.util.Map

Java.util.Map 通过 <map> 标签定义,<map> 标签里可以使用多个 <entry>,作为子标签。每个条目包含一个键和一个值。
必须在 <key> 标签里定义键

因为键和值的类型没有限制,所以可以自由的为他们指定 <value><ref><bean><null> 元素。

    <bean name="car3" class="com.laishuai.bean.Car">
        <property name="name" value="BWM"></property>
        <property name="lenght" value="5"></property>
        <property name="width" value="4"></property>
    </bean>
    <bean name="car4" class="com.laishuai.bean.Car">
        <property name="name" value="Benz"></property>
        <property name="lenght" value="5"></property>
        <property name="width" value="4"></property>
    </bean>

    <bean name="laishuaiMap" class="com.laishuai.bean.LaiShuaiMap">
        <property name="name" value="LaiShuai"></property>
        <property name="cars">
            <map>
                <entry key="car3" value-ref="car3"></entry>
                <entry key="car4" value-ref="car4"></entry>
            </map>
        </property>
    </bean>

当map的 key 和 value 的值类型都是 String 时可以用 value 赋值

使用 Utility Scheme 定义集合

使用基本集合标签定义集合时,不能将集合作为独立的 Bean 定义,导致其他 Bean 不能引用该集合,所以不能在不同 Bean 组件共享集合;

可以使用util schema 里的集合标签定义独立的集合 Bean ,需要注意的是,必须在 <beans> 根元素里添加 util.schema 定义;

     <bean name="car3" class="com.laishuai.bean.Car">
        <property name="name" value="BWM"></property>
        <property name="lenght" value="5"></property>
        <property name="width" value="4"></property>
    </bean>
    <bean name="car4" class="com.laishuai.bean.Car">
        <property name="name" value="Benz"></property>
        <property name="lenght" value="5"></property>
        <property name="width" value="4"></property>
    </bean>

    <util:list id="cars">
        <ref bean="car3"></ref>
        <ref bean="car4"></ref>
    </util:list>
    
    <bean name="user4" class="com.laishuai.bean.User">
        <property name="name" value="LaiShuai"></property>
        <property name="age" value="21"></property>
        <property name="cars" ref="cars"></property>
    </bean>

使用 P 命名空间

为了简化 XML 文件配置,越来越多的 XML 文件采用 属性 而非子元素配置信息;
Spring 2.5 版本开始引入一个新的 P 命名空间,可以通过 Bean 元素属性的方式配置 Bean 的属性 。

使用 P 命名空间后,基于 XML 的配置方式将进一步简化

<bean name="user5" class="com.laishuai.bean.User" p:name="ls" p:cars-ref="cars" ></bean>
上一篇 下一篇

猜你喜欢

热点阅读