November
15th,
2014
Antes de leer este post, te recomiendo los anteriores para un mejor entendimiento:
- Contenedores e Inyección de Dependencias 01
- Contenedores e Inyección de Dependencias 02
- Contenedor Spring 01
- Contenedor Spring 02
- Contenedor Spring 03
Inyeccion de Colecciones de Valores
Hemos visto en los otros artículos la inyección por constructor y setter. Vimos como inyectar valores y referencias a otras
clases. Ahora veamos como es la inyección de colecciones, por ejemplo listas, mapas, etc. Spring proporciona algunos tags
para esto como <list>
, <set>
, <map>
y <props>
.
- El tag
<list>
trabaja conjava.util.Collection
,java.util.List
yjava.util.Set
. - El tag
<map>
trabaja conjava.util.Map
. - El tag
<prop>
trabaja conjava.util.Properties
Listas
El tag <list>
permite dentro de el otros como <value>
, <bean>
, <ref>
y <null/>
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<bean class="com.ejemplo1.Foo">
<property name="lista">
<list>
<value>valorUno</value>
<value>valorDos</value>
<null/>
</list>
</property>
</bean>
<bean class="com.ejemplo1.Bar">
<property name="lista">
<list>
<ref bean="beanUno"/>
<bean class="examples.BeanDos" />
</list>
</property>
</bean>
El tag <set>
es básicamente parecido a <list>
y son intercambiables.
Mapas
Permite internamente <entry>
. El tag <entry>
posee los atributos key
, value
, value-type
, key-ref
y value-ref
.
1
2
3
4
5
6
7
8
<bean class="com.ejemplo1.Foo">
<property name="map">
<map>
<entry key="keyUno" value="1" value-type="int"/>
<entry key="keyDos" value="2" value-type="int"/>
</map>
</property>
</bean>
Properties
Este tag permite internamente <prop key=”...”>valor</prop>
.
1
2
3
4
5
6
7
8
<bean class="com.ejemplo1.Foo">
<property name="propiedades">
<props>
<prop key="keyUno">valorUno</prop>
<prop key="keyDos">valorDos</prop>
</props>
</property>
</bean>
Alternativamente podríamos hacer:
1
2
3
4
5
6
7
8
<bean class="com.ejemplo1.Foo">
<property name="propiedades">
<value>
keyUno=valor1
keyDos=valor2
</value>
</property>
</bean>