Spring-6,配置bean的集合属性

来源:互联网 发布:淘宝定制的款去哪里了 编辑:程序博客网 时间:2024/05/22 17:07

配置集合属性

集合属性的配置
在spring中可以使用一组xml标签(,,…)来配置bean的集合属性

  1. 配置java.util.List类型的属性需要使用标签,在标签内部,使用value指定字面值,使用ref引用其他bean

  2. 配置java.util.Set类型需要使用标签

  3. 配置数组和List一样

  4. 配置ava.util.Map类型需要时使用标签
    通过配置map的entry子标签的key,key-ref,vlaue,vlaue-ref属性或者key,value子标签来配置键值对 ,键和值的类型都没有限制,可以自由的指定,,,等元素

  5. 配置java.util.Properties类型使用标签,

配置List属性

对于Person2类,有一个属性为List

这里写图片描述

car.java:
这里写图片描述

注入List属性

    <bean id="car" class="com.tuxianchao.spring.beans.Car">        <property name="brand" value="Jeep"></property>        <property name="corp" value="GQ"></property>        <property name="price" value="400000"></property>    </bean>    <bean id="car2" class="com.tuxianchao.spring.beans.Car">        <property name="brand" value="QQ"></property>        <property name="corp" value="QR"></property>        <property name="price" value="40000"></property>    </bean>    <bean id="car3" class="com.tuxianchao.spring.beans.Car">        <property name="brand" value="DS"></property>        <property name="corp" value="DS"></property>        <property name="price" value="200000"></property>    </bean>    <bean id="person2-1" class="com.tuxianchao.spring.beans.Person2">        <constructor-arg name="name" value="zahngsan"></constructor-arg>        <constructor-arg name="age" value="20"></constructor-arg>        <!--为集合属性赋值 -->        <!-- 使用内部list标签或者内部bean -->        <!-- ****************************************************** -->        <constructor-arg name="carList">            <list>                <!--list标签中应用外部bean -->                <ref bean="car" />                <ref bean="car2" />                <ref bean="car3" />                <!-- list标签中使用内部bean -->                <bean class="com.tuxianchao.spring.beans.Car">                    <property name="brand" value="AA"></property>                    <property name="corp" value="AA"></property>                    <property name="price" value="100"></property>                </bean>            </list>        </constructor-arg>        <!-- ****************************************************** -->    </bean>

配置Map属性

对于person3,有一个map属性
这里写图片描述

<bean id="person3-1" class="com.tuxianchao.spring.beans.Person3">        <constructor-arg name="name" value="lisi"></constructor-arg>        <constructor-arg name="age" value="25"></constructor-arg>        <!--配置map属性 -->        <constructor-arg name="cars">            <map>                <entry key="1111">                    <ref bean="car" />                </entry>                <entry key="2222" value-ref="car2">                </entry>                <entry key="3333" value-ref="car3">                </entry>                <!--使用key子标签和内部bean配置map -->                <entry>                    <key>                        <value type="java.lang.String">4444</value>                    </key>                    <bean class="com.tuxianchao.spring.beans.Car">                        <property name="brand" value="AA"></property>                        <property name="corp" value="AA"></property>                        <property name="price" value="100"></property>                    </bean>                </entry>            </map>        </constructor-arg>    </bean>

配置Properties属性

Properties一般用于配置文件,比如连接数据库的配置信息(url,user,password等),例如,DataSource包含一个Properties属性。

对于这种属性的注入:

    <!-- 为properties属性赋值 -->    <bean id="dataSource" class="com.tuxianchao.spring.beans.DataSource">        <property name="properties">            <!--使用prop为properties赋值 -->            <props>                <prop key="driver">com.mysql.jdbc.Driver</prop>                <prop key="url">jdbc:mysql://localhost:3306/testjdbc</prop>                <prop key="user">root</prop>                <prop key="password">123456</prop>            </props>        </property>    </bean>

配置外部的集合bean

配置外部的集合bean,供其他多个bean引用,而不需要每次在bean内部配置集合。
首先需要导入util命名空间 ,配置外部集合bean,然后在bean的集合属性中引用外部集合bean。

<!-- 使用外部的List bean -->    <util:list id="carsList">        <ref bean="car" />        <ref bean="car2" />        <ref bean="car3" />    </util:list>    <bean id="person2-2" class="com.tuxianchao.spring.beans.Person2">        <constructor-arg name="name" value="zahngsan"></constructor-arg>        <constructor-arg name="age" value="20"></constructor-arg>        <constructor-arg name="carList">            <!-- 使用外部集合bean -->            <ref bean="carsList" />        </constructor-arg>    </bean>    <!-- 使用外部的map bean -->    <util:map id="carsMap">        <entry key="1111">            <ref bean="car" />        </entry>        <entry key="2222" value-ref="car2">        </entry>        <entry key="3333" value-ref="car3">        </entry>    </util:map>    <bean id="person3-2" class="com.tuxianchao.spring.beans.Person3">        <constructor-arg name="name" value="lisi"></constructor-arg>        <constructor-arg name="age" value="25"></constructor-arg>        <constructor-arg name="cars">            <ref bean="carsMap" />        </constructor-arg>    </bean>    <!-- 使用properties bean -->    <util:properties id="properties1">        <prop key="driver">com.mysql.jdbc.Driver</prop>        <prop key="url">jdbc:mysql://localhost:3306/testjdbc</prop>        <prop key="user">root</prop>        <prop key="password">root</prop>    </util:properties>    <bean id="dataSource2" class="com.tuxianchao.spring.beans.DataSource">        <property name="properties">            <ref bean="properties1" />        </property>    </bean>

使用p命名空间简化配置文件

为了简化配置文件,在xml文件中可以使用非子元素而是属性来配置信息,

<!--使用p命名空间,简化配置文件 -->    <!-- 可通过元素的属性来配置bean的属性 -->    <bean id="person2-3" class="com.tuxianchao.spring.beans.Person2"        p:name="ppp" p:age="50" p:carList-ref="carsList"></bean>
0 0
原创粉丝点击