给复杂类型的赋值都在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