Как определить свойство карты в отдельном XML-файле (в Spring)? - PullRequest
10 голосов
/ 15 декабря 2010

Предположим, что проект использует Spring и определяет его компоненты в XML? И у него есть некоторый компонент, который принимает Map в конструкторе.

Обычно эта карта определяется как свойство под компонентом и имеет под ним записи.

Но что, если список участников огромен? Это будет раздувать XML большое время ...

Может ли оно (карта) быть каким-либо образом определено в файле XML и затем ссылаться на компонент, которому это нужно? Как?

Ответы [ 2 ]

15 голосов
/ 15 декабря 2010

Да, используя синтаксис <util:map> (см. документы ), например,

beans1.xml

<util:map id="myMap">
    <entry .../>
    <entry .../>
    <entry .../>
    <entry .../>
</util:map>

beans2.xml

<import resource="beans1.xml"/>

<bean id="..." class="...">
   <constructor-arg ref="myMap"/>
</bean>
4 голосов
/ 13 апреля 2013

Ответ Скаффмана работал на меня.Однако для настройки пространств имен XML beans1.xml должно выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<util:map id="myMap" 
    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.1.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util.xsd">

    <entry key="myKey" value="myValue" />

</util:map>
...