En la inyección de constructor, la inyección de dependencia se inyectará con la ayuda de constructores. Ahora, para establecer 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.
Ejemplo:
Java
package com.geeksforgeeks.org; import com.geeksforgeeks.org.IGeek; public class GFG { // The object of the interface IGeek IGeek geek; // Constructor to set the CDI GFG(IGeek geek) { 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 la 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
Ejemplo:
1) Empleado.java
Crear una clase Empleado:
Java
package com.geeksforgeeks.org; import com.geeksforgeeks.org.IGeek; import java.util.List; public class Employee { private String name; private String employeeID; private String department; private List<String> address; public Employee(List<String> address) { this.address = (List<String>)address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getemployeeID() { return employeeID; } public void setemployeeID(String employeeID) { this.employeeID = employeeID; } public String getdepartment() { return department; } public void setdepartment(String department) { this.department = department; } public List<String> getAddress() { return address; } public void display() { System.out.println("Name: " + getName()); System.out.println("Employee ID: " + getEmployeeID()); System.out.println("Department: " + getDepartment()); System.out.println("Address: " + getAddress()); } }
2) contexto de aplicación.xml
Para definir la lista, use el elemento de lista de constructor-arg.
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="employee" class="com.geeksforgeeks.org.Employee"> <constructor-arg value="Ram"></constructor-arg> <constructor-arg value="101"></constructor-arg> <constructor-arg value="Software testing"></constructor-arg> <constructor-arg> <list> <value>Gurugram</value> <value>Haryana</value> <value>India</value> </list> </constructor-arg> </bean> </beans>
3) Prueba.java
Probando la aplicación del resorte:
Java
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; public class Test { public static void main(String[] args) { Resource resource = new ClassPathResource( "applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(resource); Employee e = (Employee)factory.getBean("employee"); e.display(); } }
Producción:
Name: Ram Employee ID: 101 Department: Software testing Address: [Gurugram, Haryana, 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