Весенняя карта объединит все значения

1

У меня есть две карты, определенные через <util:map> (один должен использоваться, другой - эталонная карта, которую будут использовать другие). Я хочу передать (импортировать/объединить) значения одной карты в другую, т.е.

CommonMap
    -> "someKey"      : "someValue"
    -> "someOtherKey" : "someOtherValue"

Map1
    -> grab all key value pairs in 'CommonMap'

Я попробовал более простой пример определения общей карты и попытался ссылаться на нее для инъекции свойств:

EDIT # 2 Исходная проблема решена благодаря ответам ниже и теперь основной вопрос

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:util="http://www.springframework.org/schema/util"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/util
   http://www.springframework.org/schema/util/spring-util-3.0.xsd">

   <bean id="mainBean" class="SpringTest.SpringTest">
          <property name="myBean" ref="myFirstBean"/>
   </bean>

   <bean id="myFirstBean" class="SpringTest.MyBean">
          <constructor-arg value="Hello!"/>
          <property name="myMap" ref="myLookup" />
   </bean>

   <util:map id="myLookup">
          <entry key="myKey" value="142"/>
          <entry key="myOtherKey" value="7"/>
   </util:map>

Как создать вторую <map> и указать все значения myLookup в ней?

ИЗМЕНИТЬ № 3 подробнее о том, что я пробовал

Попытка этого

<bean id="myFirstBean" class="SpringTest.MyBean">
          <constructor-arg value="Hello!"/>
          <property name="myMap" ref="myLookup" />
   </bean>

   <util:map id="commonLookup">
          <entry key="myKey" value="142"/>
          <entry key="myOtherKey" value="7"/>
   </util:map>

   <bean id="myLookup" parent="commonLookup">
          <util:map merge="true" />
   </bean>

но получить эту ошибку

Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 25 in XML document from class path resource [configuration-spring.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 25; columnNumber: 40; cvc-complex-type.3.2.2: Attribute 'merge' is not allowed to appear in element 'util:map'.
  • 0
    Можете ли вы опубликовать свою XML-запись для xmlns:util
  • 0
    xmlns: util = " springframework.org/schema/util "
Показать ещё 6 комментариев
Теги:
spring

2 ответа

1
Лучший ответ

Согласно qaru.site/questions/1964397/...:

<bean id="myFirstBean" class="SpringTest.MyBean">
    <constructor-arg value="Hello!" />
    <property name="myMap" ref="myLookup" />
</bean>

<bean id="commonLookup" 
    class="org.springframework.beans.factory.config.MapFactoryBean">
    <property name="sourceMap">
        <map>
            <entry key="myKey" value="142" />
            <entry key="myOtherKey" value="7" />
        </map>
    </property>
</bean>
<bean id="myLookup" parent="commonLookup" 
    class="org.springframework.beans.factory.config.MapFactoryBean">
    <property name="sourceMap">
        <map merge="true">
            <entry key="myLookupKey" value="12" />
        </map>
    </property>
</bean>
  • 0
    спасибо это работает!
  • 0
    Ооочень ... дубликат?
1

Убедитесь, что декларация пространства имен util полностью определена в теге beans в файле контекста приложения

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

Ещё вопросы

Сообщество Overcoder
Наверх
Меню