说说如何简化 Spring 的 Bean 配置方式

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 的定义文件。

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/80194556