inyección de dependencia
Post on 07-Jul-2015
1.965 Views
Preview:
DESCRIPTION
TRANSCRIPT
Inyección de Dependencia
adrianp@epidataconsulting.com
@aparedes82
http://elblogdelfrasco.blogspot.com
● Proyecto Base● Conceptos● Spring● Java EE● Spring V.S. Java EE
Agenda
Proyecto Base
Modelo de Dominio
Repositorio de Proyectos
Arquitectura de 3 capas
Buscar Proyecto por Nombre (1)
Buscar Proyecto por Nombre (1)
Buscar Proyecto por Nombre (2)
Buscar Proyecto por Nombre (2)
Conceptos
● Rigidez○ Dificultad para implementar cambios
● Fragilidad○ Tendencia a romperse con cada cambio
● Inmovilidad○ Inhabilidad de reutilizar el código
● Viscosidad○ Del Diseño: los hacks son muy sencillos○ Del Ambiente: lento e ineficiente
Síntomas de un Diseño Corrompido
● Cambios en los Requerimientos○ Inicialmente no contemplados
● Administración de Dependencias○ Es la arquitectura de dependencias la que
se va degradando
Causas que Aceleran la Entropía
● Cambios en los Requerimientos○ Inicialmente no contemplados
● Administración de Dependencias○ Es la arquitectura de dependencias la que
se va degradando
LAS DEPENDENCIASSON MALAS!!!
Causas que Aceleran la Entropía
● Con el uso de interfaces, buscamos invertir el control
● Al trabajar con interfaces y no contra las implementaciones, invertimos el control de la ejecución del código
● En camino a un Diseño Declarativo
Inversión de Control (IoC)
Buscar Proyecto por Nombre (2)
DIP Ad-Hoc
● Los componentes deben depender de abstracciones, no de implementaciones concretas
● Las dependencias que una clase tiene no deben ser asignadas por ella misma sino por un agente externo (Contenedor)
● Inyección de Dependencia● Reflection, Spring, EJB, CDI
Inyección de Dependencia (DIP)
Dependencia por Configuración
● Don't call us, we'll call you● Relacionado con IoC y DIP● Favorece el Bajo Acoplamiento● Favorece la Alta Cohesión
Principio de Hollywood
spring.io
Algunos Proyectos Spring.io● Spring Framework● Spring Boot● Spring Data / Spring XD● Spring Integration● Spring Security● Spring Social● Spring Mobile● Groovy / Grails● Spring MVC / Webflow
DIP Spring
Contextos de Spring● Singleton (una única instancia)● Prototype (sin estado)● Request (para HTTP Request)● Session (para HTTP Session)● Global Session (para Portlets)
Java Enterprise Edition
Algunas Especificaciones Java EE
DIPJava EE (CDI)
Contextos de CDI● RequestScoped (para HTTP Request)● SessionScoped (para HTTP Session)● ApplicationScoped (como singleton)● ConversationScoped (long-running)
● Singleton (similar a ApplicationScoped)● Dependent (atado al bean al que
pertenece; scope default)
Spring V.S. Java EE
Reglas para Comparar (1)● Comparar versiones equivalentes
○ Ejemplo: Spring 3 V.S. Java EE 6● Comparar usando el stack completo:
○ Java EE != EJB y Spring != IoC● No comparar usando Liviano y Pesado:
○ Java EE ya no es más Pesado○ Spring ya no es más Liviano
● La importancia de las especificaciones:○ A menudo Spring usa Java EE
● Ambas plataformas son modulares○ Java EE: Modularización a nivel AS○ Spring: Modularización a nivel Maven
● Ambos plataformas son extensibles○ Ambos pueden integrarse con otros
proyectos○ Spring puede integrarse con Java EE○ Java EE puede integrarse con Spring
Reglas para Comparar (2)
● ¿La era de los Frameworks ha terminado?● La innovación sigue estando en los
Frameworks y Librerías● Ejemplos de Frameworks y Librerías que
se hicieron especificación:○ Hibernate → JPA○ Seam → CDI
Framework V.S. Especificación
● JBoss EAP 6.1: 115.5 Mb● Spring Framework 3.2.3 + Tomcat 7.0.43:
114.1 Mb
Portabilidad
● Write Once, Run Everywhere● Implementaciones Java EE:
○ JBoss AS / WildFly (Red Hat)○ TomEE (Apache)○ Glassfish (Oracle)○ Weblogic (Oracle)○ Websphere (IBM)
● Implementaciones Spring:○ Spring.io (joint venture: EMC Corporation y
VMWare)
Vendor Lock-In
● Robert C. Martin - Principios SOLID● Martin Fowler - Contenedores● http://howtojboss.com/● http://elblogdelfrasco.blogspot.com.ar/
Bibliografía
● Código Fuente:○ https://github.
com/elfrasco/dependency-injection
http://www.epidataconsulting.com/capital.humano@epidataconsulting.com
Muchas Gracias
top related