春天<util:map>速记作为bean属性?

时间:2019-02-15 15:00:14

标签: spring

我已经搜索了很多,但是没有找到关于此的示例或声明。

是否可以使用Spring(目前为4.3)XML <util:map>的简化形式在property中分配bean

具体来说,我想简化/缩短:

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">
    <property name="attributes">
        <map>
            <entry key="properties" value-ref="properties"/>
        </map>
    </property>
</bean>

3 个答案:

答案 0 :(得分:1)

好的。这是您的示例:

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">
    <property name="attributes">
        <util:map>
            <entry key="key1" value="strValue" />   <!-- value is string -->
            <entry key="key2" value="1234" value-type="java.lang.Integer" /> <!-- Use value-type to explicitly specify the type -->
            <entry key="key3" value-ref="fooBean"/> <!-- Use value-ref to reference to other bean -->
        </util:map>
    </property>
</bean>

答案 1 :(得分:1)

在Xml方面,它看起来要简洁得多! DTD不支持其他任何功能。

由于您需要裁判,所以内联也不会短一些。

答案 2 :(得分:1)

我发现这是最短的,它短2-3行,具体取决于格式。并假设您已经定义了必要的名称空间:

<util:map id="attributes">
    <entry key="properties" value-ref="properties"/>
</util:map>
<bean class="org.springframework.web.context.support.ServletContextAttributeExporter"
      p:attributes-ref="attributes"/>

但是可以说不值得附加的间接寻址和(IMO)较低的可读性。