Antes de leer este post, te recomiendo los anteriores para un mejor entendimiento:

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 con java.util.Collection, java.util.List y java.util.Set.
  • El tag <map> trabaja con java.util.Map.
  • El tag <prop> trabaja con java.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>

Franky Villadiego

Volando hacia el desarrollo productivo!