将 hashmap 定义为 bean

Defining a hashmap as a bean

我正在尝试将 HashMap 定义为蓝图上的 bean xml。原来的问题是我有

<bean id="class1" class="com.acme.Class1">
  <property name="acmeMap">
    <map>
      <entry-key="coyotte" value="Poor Fellow"/>
      <entry-key="roadRunner" value="Sadistic Bird"/>
    </map>
  </property>
</bean>

而且效果很好。问题是当我在同一个蓝图 xml 文件上还有另一个 class 扩展 Class1,例如 Class1a 时。

<bean id="class1a" class="com.acme.Class1a">
  <property name="acmeMap">
    <map>
      <entry-key="coyotte" value="Poor Fellow"/>
      <entry-key="roadRunner" value="Sadistic Bird"/>
    </map>
  </property>
</bean>

这意味着定义地图两次并且必须在蓝图上维护它xml。有没有办法实例化,比如像

 <bean id="acmeMap" class="java.util.HashMap"/> 

并使用我需要的值对其进行初始化,然后在其他 bean 上导入引用?这意味着 acmeMap 只创建一次。我确实在 Internet 上搜索了初始化蓝图 bean 映射的示例,但找不到。或者也许解决方案是别的?

您可以使用父标签来指定继承并控制 class 中定义的属性。您可以重复使用相同的或定义新的 one.You 可以参考下面的示例。

<bean id="bean1" class="MyBean">
    <property name="attrib1" value="val1" />
    <property name="attrib2" value="val2" />
</bean>
<bean id="bean2" parent="bean1">
    <property name="attrib3" value="val3" />
    <property name="attrib4" value="val4" />
</bean>