Resorte: inyección Setter con objeto dependiente

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.

Inyección Setter con objeto dependiente

Si existe una relación entre las clases de nuestra aplicación Spring, entonces creamos la instancia del objeto dependiente también llamado objeto contenido. Después de crear la instancia del objeto dependiente, lo pasamos como argumento del contenedor de la clase principal. Ejemplo: si un empleado tiene una dirección, la instancia de la clase Dirección es el objeto dependiente y se incluirá en la clase Empleado.

Implementación: el siguiente ejemplo muestra una inyección de setter con un objeto dependiente.

A. Empleado.java

Cada empleado tiene las siguientes propiedades:

  • Nombre
  • ID de empleado
  • Departamento
  • Dirección (objeto dependiente)

Ejemplo: Clase de empleado 

Java

// Java Program to Illustrate Employee Class
 
package com.geeksforgeeks.org;
 
// Class
class Employee {
 
    // Class member members
    private String name;
    private String employeeID;
    private String department;
    private Address address;
 
    // Setter
    public void setName(String name) { this.name = name; }
 
    // Setter
    public void setemployeeID(String employeeID)
    {
        this.employeeID = employeeID;
    }
 
    // Setter
    public void setdepartment(String department)
    {
        this.department = department;
    }
 
    // Setter
    public void setAddress(Address address)
    {
        this.address = address;
    }
 
    // Getter
    public String getName() { return name; }
 
    // Getter
    public String getemployeeID() { return employeeID; }
 
    // Getter
    public String getdepartment() { return department; }
 
    // Getter
    public Address getAddress() { return address; }
 
    // Method
    public void display()
    {
        // Print statements
        System.out.println("Name: " + getName());
        System.out.println("Employee ID: "
                           + getEmployeeID());
        System.out.println("Department: "
                           + getDepartment());
        System.out.println("Address: "
                           + getAddress().toString());
    }
}

B. Dirección.java

La dirección tiene las siguientes propiedades:

  • Número de casa
  • Código PIN
  • Estado
  • País

Ejemplo:

Java

package com.geeksforgeeks.org;
 
class Address {
    private String houseNo;
    private String pincode;
    private String state;
    private String country;
     
    public Address(String houseNo, String pincode, String state, String country) {
        super();
        this.houseNo = houseNo;
        this.pincode = pincode;
        this.state = state;
        this.country = country;
    }
     
    public String toString() {
        return "["+ houseNo + "," + pincode + "," + state + "," + country + "]";
    }
 
}

C. applicationContext.xml

Usaremos el atributo ref del elemento de propiedad para especificar la referencia del bean de dirección en el bean de empleado .

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="address" class="com.geeksforgeeks.org.Address"> 
        <property name="houseNo" value="110/4"></property> 
        <property name="pincode" value="121212"></property> 
        <property name="state" value="Delhi"></property> 
        <property name="country" value="India"></property> 
    </bean> 
   
    <bean id="employee" class="com.geeksforgeeks.org.Employee"> 
        <property name="name" value="Ram"></property> 
        <property name="employeeID" value="1001"></property> 
        <property name="department" value="Software development"></property>
        <property name="address" ref="address"></property> 
    </bean> 
   
</beans> 

D. Archivo de aplicación (Test.java)

Esta clase llamará al método display() de la clase Employee.

Ejemplo:

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.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
 
// Application(Main) Class
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 e = (Employee)factory.getBean("employee");
 
        // Calling print() method inside main() method
        e.display();
    }
}

Producción:

Name: Ram
Employee ID: 1001
Department: Software development
Address: [110/4, 121212, 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *