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.Listyjava.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>