domingo, 17 de noviembre de 2013

Inyección de Dependencia

En el post anterior les conté de la charla de Inyección de Dependencia que iba a dar en la UTN. Tengo que dar las gracias a la gente de Epidata y la gente de la UTN que organizó la charla, ya que salió de maravilla.

En este post les comparto las slides que usé para dar la charla:


Y el código fuente con los ejemplos, que pueden descargar o forkear desde GitHub:

El ejemplo se trata de un multi-proyecto Maven con distintos módulos:
  • dependency-injection-model: contiene un modelo simple de POJOs con una clase Proyecto y diferentes tipos de Empleados, discriminados por roles para proyectos de software: PM, Arquitecto, Desarrollador, Tester; además cuenta con una interfaz ProjectRepository con una implementación JSON que sirve para recuperar una lista de proyectos desde un archivo JSON.
  • dependency-injection-base: contiene un simple proyecto Java con un ProjectDAO y un ProjectService, y JUnit Tests para cada capa. Este ejemplo no usa el patrón de inyección de dependencia. Los objetos se instancian usando el operador "new" de Java.
  • dependency-injection-adhoc: contiene un simple proyecto Java que implementa el patrón de inyección de dependencia de forma ad-hoc usando reflection.
  • dependency-injection-spring: El mismo ejemplo de ProjectDAO y ProjectService, pero implementando la inyección de dependencia con Spring Framework. No requiere ningún servidor de aplicaciones. Los tests se ejecutan con JUnit.
  • dependency-injection-javaee: El mismo ejemplo de ProjectDAO y ProjectService, pero implementando la inyección de dependencia con Weld, la implementación de referencia de JavaEE/CDI. Al igual que el ejemplo anterior, los unit tests no requieren ningún servidor de aplicaciones, ejecutan en modo standalone.