1 简化配置
Spring 为字面值、引用 Bean 和集合提供了简化的配置方式,所以如果没有用到完整配置中的特殊功能,建议尽量采用简化的配置方式。
1.1 字面值
1.1.1 字面值属性
简化前:
<property name="name">
<value>灿烂千阳</value>
</property>
简化后:
<property name="name" value="灿烂千阳"/>
1.1.2 构造函数参数
简化前:
<constructor-arg type="java.lang.String">
<value>灿烂千阳</value>
</constructor-arg>
简化后:
<constructor-arg type="java.lang.String" value="灿烂千阳"/>
1.1.3 集合元素
简化前:
<property name="income">
<map>
<entry>
<key>
<value>第一季度</value>
</key>
<value>20000.00</value>
</entry>
</map>
</property>
简化后:
<property name="income">
<map>
<entry key="第一季度" value="20000.00"/>
</map>
</property>
注意: 如果使用简化方式,则无法使用 XML 特殊处理标签 <![CDATA[]]>
,但我们可以采用 XML 的转义序列来处理这些特殊字符。
1.2 引用对象属性
1.2.1 字面值属性
简化前:
<property name="author">
<ref bean="author"></ref>
</property>
简化后:
<property name="author" ref="author"/>
1.2.2 构造函数参数
简化前:
<constructor-arg>
<ref bean="author"/>
</constructor-arg>
简化后:
<constructor-arg ref="author"/>
1.2.3 集合元素
简化前:
<property name="income">
<map>
<entry>
<key>
<ref bean="keyBean"/>
</key>
<ref bean="valueBean/>
</entry>
</map>
</property>
简化后:
<property name="income">
<map>
<entry key-ref="keyBean" value-ref="valueBean"/>
</map>
</property>
<ref>
的简化形式是 <ref bean="xxx">
,<ref local="xxx">
与 <ref parent="xxx">
没有简化形式。
2 p 命名空间
Spring 2.5 + 版本引入了 p 命名空间,使用它可以进一步简化 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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean id="author" class="net.deniro.spring4.bean.Author"/>
<bean id="book" class="net.deniro.spring4.bean.Book"
p:name="面纱" p:author-ref="author">
</bean>
</beans>
首先声明 p 命名空间,然后配置 Bean 的属性值。
字面值的属性配置格式为:
p:<属性名>="xxx"
字面值的属性配置格式为:
p:<属性名>-ref="xxx"
因为 p 命名空间中的属性名是可变的,所以无须在 xsi:schemaLocation 中指定 schema 的定义文件。