También llamada Inverse of Control,se utiliza para evitar la excesiva creación de objetos de manera innecesaria que puede provocar la caida del servidor.Esto se suele utilizar con objetos DAO que crean una conexión a la BD ya que si cada usuario crea una conexión a la BD y el número de usuarios es alto pueden hacer que el servidor se caiga.
La inyección de dependencias q actua generando los objetos cuando se arranca la aplicación y luego los inyecta en los demás objetos que los necesiten a través de métodos set o bien a través del constructor, pero estos objetos se instancian una vez, se guardan en una factoría y se comparten por todos los usuarios (al menos en el caso de Spring) y nos evitamos tener que andar extendiendo clases o tumbar el servidor de la BD.
Spring soporta inyección de dependencias a través del constructor y a través de métodos set pero se aconseja hacerlo a través de métodos set.
En conclusion :
- Se utiliza para no tener que crear el objecto siempre cada que creemos el servicio.
- El mismo objeto creado puede ser usado por varios servicios.
Un Ejemplo:
public class Clase {
private Clase2 atributo1;
public Clase(){
}
public void setAtributo1(Clase2 atributo1){
this.atributo1 = atributo1;
}
}
public class Clase2 {—IMPLEMENTACIÓN—}
Declaramos nuestros beans en el contexto de la aplicación< id="atributo1" class="org.mipaquete.bean.Clase2">
< /bean>
< id="atributo" class="org.mipaquete.bean.Clase">
< name=" atributo1" ref="atributo1">
< /bean>
El atributo refhace referencia al id del bean creado así que hay que tener un poco de cuidado con los ids.