Java 更新beans.xml中的映射项

Java 更新beans.xml中的映射项,java,spring,Java,Spring,我们有一个带有bean定义的xml文件。由于这是不同模块之间的共享XML文件,我们不能更改此XML,所以根据项目需要,我们决定更新bean定义 <bean id="columnMap" class="org.springframework.beans.factory.config.MapFactoryBean"> <property name="sourceMap"> <map key-type="java.lang.String

我们有一个带有bean定义的xml文件。由于这是不同模块之间的共享XML文件,我们不能更改此XML,所以根据项目需要,我们决定更新bean定义

<bean id="columnMap"
      class="org.springframework.beans.factory.config.MapFactoryBean">
    <property name="sourceMap">
        <map key-type="java.lang.String" value-type="java.lang.String">
            <entry key="Item Id" value="ITEM_ID"/>
        </map>
    </property>
</bean>


现在,需要在另一个xml中更新此bean,并希望添加新的映射条目。

您可以采用两种策略,此堆栈链接()中提供了一些非常好的示例。
请看@Umut Utkan的答案,它很好地描述了解决方案

策略1:添加一个调用工厂bean的方法,并使用该工厂向现有映射添加值,而不是出错/重写。但是,由于您无法更改bean定义,因此我不会详细介绍此内容(链接提供了有关如何实现此功能的更多信息)

策略2:非常简单,将集合的merge标志设置为true,如下所示

<bean id="columnMap" class="org.springframework.beans.factory.config.MapFactoryBean">
    <property name="sourceMap">
        <util:map>
            <entry key="1" value="1"/>
        </util:map>
    </property>
</bean>
<bean id="specificColumnMap" class="org.springframework.beans.factory.config.MapFactoryBean" parent="columnMap">
    <property name="sourceMap">
        <util:map merge="true">
            <entry key="2" value="2"/>
        </util:map>
    </property>
</bean>


附言:我不知道这是否属于重复问题的范畴,因此我将发布答案,并让主持人就此进行电话采访

您好,经过调查,我们发现我们无法继续使用上述方法,因为它需要在代码中进行更改,以便使用新定义的bean“specificColumnMap”,因此,我们决定使用ant调用尝试这种方法,但在安装过程中出现错误,即未定义“item.property”