Inyección de dependencias

La inyección de dependencias es un patrón de programación que, a pesar de lo que mucha gente cree, no requiere ninguna anotación del tipo @Inject o @Autowired para aplicarse.

La idea del patrón es crear las dependencias de una clase en tiempo de ejecución en lugar de en la compilación.

Por ejemplo, supongamos la siguiente clase:

public class MiClase {

  private List miLista;

  public MiClase() {
    this.miLista = new ArrayList();
  }
}

La dependencia, miLista, se crea en el tiempo de compilación, ya que la propia clase es la encargada de la construcción de sus dependencias.

Mientras que en el siguiente ejemplo:

public class MiClase {

  private List miLista;

  public MiClase(List lista) {
    this.miLista = lista;
  }
}

Se inyecta la dependencia en tiempo de ejecución, ya que la dependencia miLista se le proporciona a la hora de crearse como parámetro en el constructor.

Existiría otro ejemplo donde la dependencia se le proporciona mediante un set.

public class MiClase {

  private List miLista;

  public void setMiLista(List miLista) {
    this.miLista = lista;
 }
} 

La ventaja del patrón es que el código es más flexible, puesto que podemos proporcionar diferentes implementaciones de la interfaz, en este caso List, y no limitarnos a uno solo, como en el ejemplo sin dependencia.

Como punto negativo del patrón se añade un acoplamiento entre clases, puesto que se crea una dependencia entre la clase que construimos y la clase que le inyecta los valores necesarios para su construcción.

Esta entrada ha sido publicada en Glosario y etiquetada como , , . Guarda el enlace permanente.

Deja una respuesta

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