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