Определение хэш-карты как 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>

и это работает хорошо. Проблема в том, что у меня есть еще один класс, который расширяет Class1, например Class1a, в том же xml-файле проекта.

<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"/> 

и инициализировать его нужными мне значениями, а затем импортировать ссылку на другие компоненты? Это означает, что acmeMap создается только один раз. Я искал примеры инициализации карт bean-компонентов в Интернете и не смог их найти. Или, может быть, решение в чем-то другом?


person Luis Matos    schedule 26.10.2015    source источник


Ответы (1)


Вы можете использовать родительский тег, чтобы указать наследование и получить контроль над свойствами, определенными в классе. Либо вы можете повторно использовать то же самое, либо определить новый. Вы можете обратиться к приведенному ниже примеру.

<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>
person Mukesh    schedule 26.10.2015
comment
Это будет означать, что bean2 имеет 4 атрибута (2 от родителя плюс 2 других, определенных на нем), если я правильно понимаю? - person Luis Matos; 26.10.2015
comment
Да вы все правильно поняли. Bean 2 будет иметь 4 атрибута. Вы можете связать это с концепцией Simple Java Inheritance. - person Mukesh; 27.10.2015