2010-12-15 9 views
9

Angenommen, ein Projekt verwendet Spring und definiert seine Beans in XMLs? Und es hat eine Bean, die eine Map im Konstruktor akzeptiert.Wie definiert man eine Map-Eigenschaft in einer separaten XML-Datei (im Frühjahr)?

Normalerweise ist diese Map als Eigenschaft unter der Bean definiert und enthält Einträge.

Aber was, wenn die Eintragsliste riesig ist? Es wird die XML große Zeit aufgebläht ...

Kann es (die Karte) irgendwie in seiner XML-Datei definiert werden und dann von der Bean, die es braucht, reffranced? Wie ?

Antwort

14

Ja, unter Verwendung der <util:map> Syntax (siehe docs), z.B.

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

kann ich das gleiche tun, sondern mit Anmerkungen und Spel? (eine separate Bean-Klasse, die die Map darstellt, die mit ihren EL-Einträgen versehen ist) – Belun

3

Antwort des skaffman für mich gearbeitet. Um jedoch der XML-Namespaces einzurichten, beans1.xml sollte wie folgt aussehen:

<?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> 
Verwandte Themen