如何在Spring中将多个映射合并为一个映射

Tim*_*mCO 2 java spring map javabeans

我在上下文文件中定义了几个映射.有没有办法将这些映射组合成一个包含所有条目的映射,而无需编写Java代码(并且不使用嵌套映射)?我正在寻找相当于Map m = new HashMap(); m.putAll(carMap); m.putAll(bikeMap); 看起来应该有一种方法可以在Spring上下文文件中执行此操作,但util:map上的Spring 3.0参考文档部分未涵盖此用例.

<!-- I want to create a map with id "vehicles" that contains all entries of the other maps -->

<util:map id="cars">
    <entry key="groceryGetter" value-ref="impreza"/>
</util:map>

<util:map id="bicycles">
    <entry key="commuterBike" value-ref="schwinn"/>
</util:map>
Run Code Online (Sandbox Code Playgroud)

Vik*_*dor 7

在Spring中使用集合合并概念,可以逐步合并多个这样的bean.我在我的项目中使用它来合并列表,但也可以扩展到合并地图.

例如

<bean id="commonMap" 
      class="org.springframework.beans.factory.config.MapFactoryBean">
    <property name="sourceMap">
        <map>
            <entry key="1" value="one"/>
            <entry key="2" value="two"/>
        </map>
    </property>
</bean>
<bean id="firstMap" 
      parent="commonMap" 
      class="org.springframework.beans.factory.config.MapFactoryBean">
    <property name="sourceMap">
        <map merge="true">
            <entry key="3" value="three"/>
            <entry key="4" value="four"/>
        </map>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

第二个映射定义与第一个映射定义的关联是通过节点parent上的属性完成的<bean>,第一个映射中的条目使用节点merge上的属性与第二个映射中的条目合并<map>.