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:
- Nombre
- ID de empleado
- 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