Primavera: inyección de constructor con mapa sin strings

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.

Inyección de constructor con colección

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 no strings. La clave será Empleado que tiene los siguientes campos:

  1. Nombre
  2. ID de empleado
  3. Departamento

El valor será Dirección que tiene los siguientes parámetros:

  • Casa no.
  • Código PIN
  • Estado
  • País

A. Empresa.java

Java

// Java Program to Illustrate Company Class
 
package com.geeksforgeeks.org;
 
// Importing required classes
import com.geeksforgeeks.org.Address;
import com.geeksforgeeks.org.Employee;
import java.util.*;
import java.util.Map.Entry;
 
// Class
public class Company {
 
    // Class member variable
    private Map<Employee, Address> employees;
 
    // Constructor
    public Company(Map<Employee, Address> employees)
    {
        // This keyword refers to current instance itself
        this.employees = employees;
    }
 
    // Method
    public void display()
    {
        // Iterating over Map using for each loop
        for (Map.Entry<Employee, Address> entry :
             employees.entrySet()) {
 
            // Print statement
            System.out.println(
                "Employee Data ->"
                + entry.getKey().toString() + " Address ->"
                + entry.getValue().toString());
        }
    }
}

 
B. Empleado.java

Java

// Java Program to Illustrate Employee Class
 
package com.geeksforgeeks.org;
 
// Importing required classes
import com.geeksforgeeks.org.Address;
 
// Class
public class Employee {
 
    // Class data members
    private String name;
    private String employeeID;
    private String department;
 
    public Employee(String name, String employeeID,
                    String department)
    {
        // This keyword refers to current instance itself
        this.name = name;
        this.employeeID = employeeID;
        this.department = department;
    }
 
    // Method
    // Overriding toString() method
    public String toString()
    {
        return ("[" + name + "," + employeeID + ","
                + department + "]");
    }
}

 
C. Dirección.java

Java

// Java Program to Illustrate Address Class
 
package com.geeksforgeeks.org;
 
// Class
public class Address {
 
    // Class data members
    private String houseNo;
    private String pincode;
    private String state;
    private String country;
 
    // Constructor
    public Address(String houseNo, String pincode,
                   String state, String country)
    {
        super();
        this.houseNo = houseNo;
        this.pincode = pincode;
        this.state = state;
        this.country = country;
    }
 
    // Method
    // Overriding toString() method
    public String toString()
    {
        return "[" + houseNo + "," + pincode + "," + state
            + "," + country + "]";
    }
}

 
D. applicationContext.xml

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="employee1" class="com.geeksforgeeks.org.Employee"> 
    <constructor-arg value="Ram"></constructor-arg> 
    <constructor-arg value="101"></constructor-arg> 
    <constructor-arg value="Software development"></constructor-arg> 
</bean> 
   
<bean id="user1" class="com.geeksforgeeks.org.Address"> 
    <constructor-arg value="110/4"></constructor-arg> 
    <constructor-arg value="128933"></constructor-arg> 
    <constructor-arg value="Delhi"></constructor-arg> 
      <constructor-arg value="India"></constructor-arg>
</bean> 
   
<bean id="company" class="com.geeksforgeeks.org.Company"> 
    <constructor-arg> 
        <map> 
            <entry key-ref="employee1" value-ref="address1"></entry>  
        </map> 
    </constructor-arg> 
</bean> 
   
</beans>

E. Prueba.java

Java

// Java Program to Illustrate Application Class
 
package com.geeksforgeeks.org;
 
// importing required classes
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 Data -> [Ram, 101, software testing], Address -> [110/4, 128933, Delhi, India]

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 *