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