2010-12-15 2 views
9

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

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

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

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

ответ

14

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

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> 
+0

я могу сделать то же самое, но с аннотациями и SPEL? (отдельный класс компонента, представляющий карту, который аннотируется для ввода его записей с помощью EL) – Belun 2010-12-15 16:36:50

3

skaffman работал для меня. Тем не менее, для установки в 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> 
Смежные вопросы