Resorte – Inyección Setter con colección sin hilos

La inyección de dependencia es la funcionalidad principal proporcionada por Spring IOC (Inversion of Control). El módulo Spring-Core es responsable de inyectar dependencias a través de los métodos Constructor o Setter. En Setter Dependency Injection (SDI), la dependencia se inyectará con la ayuda de los métodos setters y getters. Se utiliza un archivo de configuración de bean para establecer DI como SDI en el bean . Para ello, la propiedad que se establecerá con SDI se declara bajo la etiqueta <property> en el archivo bean-config.

Una colección en Java es un grupo de objetos individuales. Spring framework nos proporciona la facilidad de inyección de Setter utilizando las siguientes colecciones:

  • Lista
  • Mapa
  • Establecer

Implementación

A. Empresa.java

Una empresa puede tener varios empleados. Aquí la clase Empresa tiene una relación con la clase Empleado . La clase Empresa contendrá las instancias de la clase Empleado. Por lo tanto, el objeto Empleado será el objeto dependiente . Usaremos una lista de este objeto dependiente para demostrar la inyección de setter con una colección (lista) que no sea una string (objeto dependiente).

Java

// Java Program to Illustrate Company Class
 
package com.geeksforgeeks.org;
 
// Importing required classes
import java.util.*;
 
// Class
class Company {
 
    // Class data members
    private String companyName;
    private List<Employee> employees;
 
    // Setter
    public void setCompanyName(String companyName)
    {
        this.companyName = companyName;
    }
 
    // Setter
    public void setEmployees(List<Employee> employees)
    {
        this.employees = employees;
    }
 
    // method
    public String getCompanyName() { return companyName; }
 
    public List<Employee> getEmployees()
    {
        return employees;
    }
 
    // Method
    public void display()
    {
        System.out.println("Company: " + companyName);
        System.out.println("Empoyees:");
 
        // Iterating over using for each loop
        for (Employee employee : employees) {
            System.out.println(employee.toString());
        }
    }
}

B. Empleado.java

La clase de empleado tiene las siguientes propiedades:

  • Nombre
  • ID de empleado
  • Departamento

Java

// Java Program to Illustrate Employee Class
 
package com.geeksforgeeks.org;
 
// Class
class Employee {
 
    // Class data members
    private String name;
    private String employeeID;
    private String department;
 
    // Method
    public String getName() { return name; }
 
    // Setter
    public void setName(String name) { this.name = name; }
 
    // Getter
    public String getEmployeeID() { return employeeID; }
 
    // Setter
    public void setEmployeeID(String employeeID)
    {
        this.employeeID = employeeID;
    }
 
    // Getter
    public String getDepartment() { return department; }
 
    // Setter
    public void setDepartment(String department)
    {
        this.department = department;
    }
 
    // Method
    // Overriding toString() method of String class
    @Override public String toString()
    {
        return ("[Name: " + name
                + ", Employee Id: " + employeeID
                + ", Department: " + department + "]");
    }
}

C. applicationContext.xml

Es un archivo de configuración que contiene todos los beans.

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"> 
        <property name="name" value="John"></property> 
        <property name="employeeID" value="211"></property> 
        <property name="department" value="Penetration testing"></property> 
    </bean> 
     
    <bean id="employee2" class="com.geeksforgeeks.org.Employee"> 
        <property name="name" value="Max"></property> 
        <property name="employeeID" value="212"></property> 
        <property name="department" value="Ethical hacking"></property> 
    </bean> 
     
        <bean id="company" class="com.geeksforgeeks.org.Company"> 
        <property name="companyName" value="GeeksForGeeks"></property> 
        <property name="employees">
            <list>
                 <ref bean="employee1"/> 
                <ref bean="employee2"/>
             </list>
         </property>
    </bean> 
</beans> 

D. Principal.java

Esta es nuestra clase de aplicación (principal) que llamará al método display() de la clase Company

Java

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

Producción:

Company: GeeksForGeeks
Employees:
[Name: John, Employee ID: 211, Department: Penetration testing]
[Name: Sam, Employee ID: 212, Department: Ethical hacking]

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 *