2010-12-15 11 views
9

Supongamos que un proyecto usa Spring y define sus beans en XMLs? Y tiene un bean que acepta un Mapa en el constructor.¿Cómo se define una propiedad del mapa en un archivo XML separado (en Spring)?

Por lo general, este mapa se define como una propiedad bajo el frijol, y tiene, en virtud del mismo, las entradas.

Pero, ¿y si la lista de entradas es enorme? Será inflar el gran momento XML ...

¿Puede (mapa) de alguna manera que se determinen de que está en archivo XML y luego refferenced por el bean que lo necesita? Cómo ?

Respuesta

14

Sí, utilizando la sintaxis <util:map> (consulte docs), p.

beans1.xml

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

beans2.xml respuesta

<import resource="beans1.xml"/> 

<bean id="..." class="..."> 
    <constructor-arg ref="myMap"/> 
</bean> 
+0

¿Puedo hacer lo mismo pero con anotaciones y SpEL? (una clase de bean separada, que representa el mapa, que está anotada para inyectar sus entradas con EL) – Belun

3

de skaffman trabajó para mí. Sin embargo, para configurar los espacios de nombres XML, beans1.xml debe verse como:

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