Spring IOC_06 复杂类型赋值

给复杂类型的赋值都在property标签内进行

P/C命名空间

在配置文件中beans标签上添加xmlns:p="http://www.springframework.org/schema/p",启用P命名空间标签

<bean id="person5" class="com.nanborone.bean.Person" p:id="5" p:name="nanborone" p:male="true"></bean>

在配置文件中beans标签上添加xmlns:c="http://www.springframework.org/schema/c",启用C命名空间标签

<bean id="person6" class="com.nanborone.bean.Person" c:_0="6" c:name-ref="stringRef" c:male="true"/>

p标签对比property使用,c标签对比constructor-arg使用

null

<!-- 相当于set(null) -->
<property name="name">
    <!-- 赋null -->
    <null />
</property>
<!-- 相当于set("") -->
<bean class="ExampleBean">
    <property name="email" value=""/>
</bean>

Array

<property name="hobbies" value="book,movie,game" />

<property name="hobbies">
    <array>
        <value>book</value>
        <value>movie</value>
        <value>game</value>
    </array>
</property>

List

<property name="lists">
    <list>
        <bean id="book1" class="com.nanborone.bean.Book">
            <property name="name" value="深入理解计算机系统" />
            <property name="author" value="Randal E.Bryant" />
            <property name="price" value="139" />
        </bean>
        <ref bean="book2" />
    </list>
</property>

Set

<property name="sets">
    <set>
        <value>111</value>
        <value>222</value>
        <value>222</value>
    </set>
</property>

Property

<!-- 通过JavaBean的PropertyEditor机制转换成java.util.Properties实例 -->
<property name="properties">
    <props>
        <prop key="aaa">aaa</prop>
        <prop key="bbb">bbb</prop>
    </props>
</property>

Map

<property name="maps" ref="myMap" />
<!-- <property name="maps">
    <map>
        .......
    </map>
</property> -->
<!-- 在根标签下添加xmlns:util="http://www.springframework.org/schema/util" -->
<!-- xsi:schemaLocation中加入http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd -->
<util:map id="myMap">
    <entry key="key1" value="value1" />
    <entry>
        <key>
			<value>key2</value>
		</key>
        <value>value2</value>
    </entry>
	<entry key="key2" value-ref="book" />
    <entry key="key3">
        <bean class="com.nanborone.bean.Book">
            <property name="name" value="西游记" />
            <property name="author" value="吴承恩" />
            <property name="price" value="100" />
        </bean>
    </entry>
    <entry key="key4">
        <list>
            <value>value1</value>
            <value>value2</value>
        </list>
    </entry>
</util:map>

集合合并

<!-- 子类属性集合的值集继承父类<props/>的所有属性元素,子值的支持值覆盖父集合中的值。-->
<bean id="parent" abstract="true" class="com.nanborone.bean.Person">
    <property name="properties">
        <props>
            <prop key="key1">value1</prop>
            <prop key="key2">value2</prop>
        </props>
    </property>
</bean>
<bean id="child" parent="parent">
    <property name="properties">
        <!-- merge:指定合并父类 -->
        <props merge="true">
            <prop key="key2">value3</prop>
            <prop key="key3">value4</prop>
        </props>
    </property>
</bean>

此时子类实例中properties属性应该是:

key1=value1
key2=value3
key3=value4
发布了14 篇原创文章 · 获赞 0 · 访问量 363

猜你喜欢

转载自blog.csdn.net/weixin_44601009/article/details/104310199