Inyección de Dependencias

Tipos de Inyección de Dependencias

Aquí aprenderá cómo establecer una propiedad de un bean a través de la inyección de dependencia (ID).

La clase User tiene el siguiente código:

package com.amalakaky;
public class User {

    private String nombre;
    private int edad;
    private String nacionalidad;
    private String provincia;
    private String telefono;

    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public int getEdad() {
        return edad;
    }
    public void setEdad(int edad) {
        this.edad = edad;
    }
    public String getNacionalidad() {
        return nacionalidad;
    }
    public void setNacionalidad(String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }
    public String getProvincia() {
        return provincia;
    }
    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }
    public String getTelefono() {
        return  telefono;
    }
    public  void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String toString() {
        return  “Nombre “+ nombre + ” con “ + edad + ” años, viviendo en “ + provincia+ ” con nacionalidad “ + nacionalidad+ ” y telefono “+ telefono;
    }
}

La clase User tiene cinco atributos nombre, edad, provincia, nacionalidad y teléfono. Los cinco atributos se establecen mediante la inyección de dependencia (ID) por setter. El método toString () de la clase User se remplaza para mostrar el objeto de usuario.
Aquí el archivo beans.xml se utiliza para hacer la configuración de Spring.

El siguiente código muestra cómo establecer un valor de la propiedad a través de la inyección de dependencia (ID) por setter.

<?xml version=“1.0”  encoding=“UTF-8”?>
<beans  xmlns=http://www.springframework.org/schema/beans&#8221;
    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;
    xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&#8221;>
    <bean  id=“user”  class=“com.amalakaky.User”  >
        <property name=“nombre”  value=“Amalakaky”  />
        <property  name=“edad”  value=“24”/>         

<property name=“provincia” value=“Madrid”/>
        <property  name=“nacionalidad”  value=“España”/>
        <property  name=“telefono”  value=“625252525”/>
    </bean>
</beans>

El atributo id del elemento del <bean
se utiliza para especificar el nombre del bean (id=“user”) y el atributo de clase (class) se utiliza para especificar el nombre completo de la clase del bean (class=“com.amalakaky.User”). El elemento de propiedad <property
con el elemento de bean se utiliza para inyectar valor de la propiedad a través de la inyección por setter. El atributo de nombre name=“nombre”
del elemento de propiedad representa el atributo de
bean y el valor del atributo value=“Amalakaky”
especifica el valor de la propiedad correspondiente.

El código para ejecutar la prueba seria el siguiente:

package com.amalakaky;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public  class Main {
    public  static  void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(“beans.xml”);
        User user = (User)context.getBean(“user”);
        System.out.println(user);
    }
}

La salida de la consola sería la siguiente:

Nombre Amalakaky es con 24 años, viviendo en Madrid con nacionalidad España y teléfono 625252525

Ahora veremos la inyección por constructor
La estructura mantenemos la misma que la anterior con las modificaciones en los siguientes puntos.

La clase User

package com.amalakaky;

public
class User {

    private
String
nombre;

    private
int
edad;

    private
String
nacionalidad;

    private
String
provincia;

    private
String
telefono;

    

    User(String nombre, int edad, String nacionalidad,

            String provincia,String telefono)

    {

        this.nombre=nombre;

        this.edad=edad;

        this.nacionalidad=nacionalidad;

        this.provincia=provincia;

        this.telefono=telefono;

    }

    

    public
String toString() {

        return
“Nombre “+ nombre + ” con “ + edad + ” años, viviendo en “ + provincia+ ” con nacionalidad “ + nacionalidad+ ” y telefono “+ telefono;

    }

}

La clase Main

package com.amalakaky;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public
class Main {

    public
static
void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext(“beans.xml”);

        User user = (User)context.getBean(“user”);

        System.out.println(user);

    }

}

El Bean.xml

<!– inyeccion por constructor –>

    <bean
id=“user”
class=“com.amalakaky.User”
>

        <constructor-arg
index=“0”
type=“java.lang.String”
value=“Amalakaky”
/>

        <constructor-arg
index=“1”
type=“int”
value=“24”/>

        <constructor-arg
index=“2”
type=“java.lang.String”
value=“Madrid”/>        

        <constructor-arg
index=“3”
type=“java.lang.String”
value=“España”/>        

        <constructor-arg
index=“4”
type=“java.lang.String”
value=“625252525”/>        

    </bean>

La salida de la ejecución del main por la consola es la siguiente.

Nombre Amalakaky con 24 años, viviendo en España con nacionalidad Madrid y teléfono 625252525

Como veis las dos maneras son validas para la inyección de dependencia esta es mas simplificada pero todo depende de lo que necesitéis en cada momento.

El ejemplo se puede descargar aqui: Desacargar

Anuncios
Minientrada | Esta entrada fue publicada en Spring. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s