Spring – Inyección de constructor con mapa

En la inyección de constructor, la inyección de dependencia se inyectará con la ayuda de constructores. Ahora, para configurar la inyección de dependencia como inyección de dependencia del constructor (CDI) en el bean, se realiza a través del archivo de configuración del bean. Para esto, la propiedad que se establecerá con la inyección de dependencia del constructor se declara bajo la etiqueta <constructor-arg> en el archivo bean-config.

Ilustración:

Java

package com.geeksforgeeks.org;
 
import com.geeksforgeeks.org.IGeek;
 
public class GFG {
 
    // Creating an object of the interface IGeek
    IGeek geek;
 
    // Constructor to set the CDI
    GFG(IGeek geek)
    {
 
        // This keyword refers to current instance itself
        this.geek = geek;
    }
}

Configuración del CDI en el archivo bean-config

XML

<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  
    <bean id="GFG" class="com.geeksforgeeks.org.GFG">
        <constructor-arg>
            <bean class="com.geeksforgeeks.org.impl.CsvGFG" />
        </constructor-arg>
    </bean>
      
<bean id="CsvGFG" class="com.geeksforgeeks.org.impl.CsvGFG" />
<bean id="JsonGFG" class="com.geeksforgeeks.org.impl.JsonGFG" />
          
</beans>

Inyección de constructor con mapa

Los marcos Spring nos brindan la posibilidad de inyectar valores de colección a través del constructor en nuestra aplicación Spring. Las siguientes colecciones se pueden usar dentro de la etiqueta <constructor-arg>:

  • lista
  • establecer
  • mapa

Implementación: en el siguiente ejemplo, veremos la inyección del constructor con Map. El mapa tendrá tanto la clave como el valor como String.

A. Empresa.java

Una empresa puede tener varios empleados. Cada empleado tendrá una identificación de empleado y un departamento. El mapa de ‘empleados’ almacenará las identificaciones de los empleados como clave y los departamentos respectivos se almacenarán como valores .

Ejemplo:

Java

// Java Program to illustrate Company Class
 
package com.geeksforgeeks.org;
 
// Importing required classes
import java.util.*;
import java.util.Map.Entry;
 
// Class
public class Company {
 
    // Class member variables
    private Map<String, String> employees;
 
    // Constructor
    public Company(Map<String, String> employees)
    {
        // this keyword refers to current instance itself
        this.employees = employees;
    }
 
    // Method
    public void display()
    {
        for (Map.Entry<String, String> entry :
             employees.entrySet()) {
 
            System.out.println(
                "Employee Id ->" + entry.getKey() + ","
                + " Department->" + entry.getValue());
        }
    }
}

 
 
B. applicationContext.xml

El atributo de entrada del mapa se utilizará para almacenar información clave y de valor.

Ejemplo:

XML

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
   
  
   
     <bean id="company" class="com.geeksforgeeks.org.Company"> 
        <constructor-arg> 
            <map> 
                <entry key="101"  value="Software development"></entry> 
                <entry key="102" value="Software testing"></entry> 
                <entry key="103" value="Security"></entry> 
            </map> 
        </constructor-arg> 
    </bean>
   
</beans>

C. Prueba.java

Java

// Java Program to Illustrate Application Class
 
package com.geeksforgeeks.org;
 
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
 
// Application class
// Main class
public class Test {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a class path resource
        Resource resource = new ClassPathResource(
            "applicationContext.xml");
 
        // Creating an object of BeanFactory class
        BeanFactory factory = new XmlBeanFactory(resource);
 
        // Creating an object of Employee class
        Employee c = (Employee)factory.getBean("company");
 
        // Calling print() method inside main() method
        c.display();
    }
}

Producción:

Employee ID -> 101, Department -> Software development
Employee ID -> 102, Department -> Software testing
Employee ID -> 103, Department -> Security

Publicación traducida automáticamente

Artículo escrito por abhinavjain194 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *