10 Stimmen

Wie definiert man eine Map-Eigenschaft in einer separaten XML-Datei (in Spring)?

Angenommen, ein Projekt verwendet Spring und definiert seine Beans in XMLs? Und es hat eine Bean, die im Konstruktor eine Map akzeptiert.

Normalerweise wird diese Karte als Eigenschaft unter der Bohne definiert und hat darunter Einträge.

Was aber, wenn die Liste der Einträge riesig ist? Das würde die XML-Datei stark aufblähen...

Kann sie (die Karte) irgendwie in einer eigenen XML-Datei definiert werden und dann von der Bohne, die sie benötigt, referenziert werden? Wie?

15voto

skaffman Punkte 389758

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>

4voto

Arlo Punkte 1261

Die Antwort von skaffman hat bei mir funktioniert. Allerdings, um die XML-Namespaces einrichten, beans1.xml aussehen sollte:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X