spring inyección de dependencias
TRANSCRIPT
![Page 1: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/1.jpg)
Inyección de
DependenciasSpring
3.0Ágil Java
José Díaz DíazCEO JoeDayzE-mail: [email protected]: http://www.joedayz.orgTwitter: joedayz
![Page 2: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/2.jpg)
Objetivos de la Presentación
Ágil Java
Entender uno de los pilares del Spring Framework. La inyección de Dependencias.
![Page 3: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/3.jpg)
Datos del Speaker
Ágil Java
• Consultor, Instructor, Mentor, Autor
• Trabajo con Java Empresarial,
Desarrollo Web y Tecnologías Open
Source desde hace 10 años
• CEO JoeDayz, capacitando y
desarrollando proyectos en el Estado y
empresas privadas a nivel nacional e
internacional
• Speaker frecuente en eventos y
conferencias relacionadas a Java y
Spring
• Escribiendo libro sobre Spring 3 para
este 2010
![Page 4: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/4.jpg)
Ágil Java
![Page 5: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/5.jpg)
Agenda
Ágil Java
• Introducción de Spring Framework
• Misión de Spring
• Módulos de Spring
• Inyección de Dependencias
![Page 6: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/6.jpg)
Introducción a Spring Framework
Ágil Java
• Simplifica J2EE
• Administra las dependencias entre
componentes
• Framework Liviano
• Inyección de Dependencias (DI)
• Orientado a Aspectos (AOP)
• Contenedor
• Framework a la Carta
![Page 7: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/7.jpg)
Misión de Spring
Ágil Java
![Page 8: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/8.jpg)
Módulos de Spring
Ágil Java
![Page 9: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/9.jpg)
Inyección de Dependencias (DI)
•Antes llamado Inversion de Control
• Martin Fowler (2004), concluyo que ningún aspecto de control
estaba siendo invertido y concluyó que si la adquisición de
dependencias estaba siendo invertido, un mejor termino que describe
esto, es, “Inyección de dependencias”.
• La clave o beneficio de DI es el pobre
acoplamiento. Si un objeto solo conoce sus
dependencias, a través, de su interface,
entonces la dependencia puede ser
Cambiada con una diferente implementación
cuando se nos apetezca, sin que
el objeto dependiente sepa del cambio
o la diferencia.
![Page 10: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/10.jpg)
•a
DI Demo
![Page 11: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/11.jpg)
DI Demo
• Perú necesita un héroe y a tu empresa (área de marketing) no se le
ocurrió mejor idea que crear un superhéroe.
• El departamento de informática excitado agarra su IDE favorito y
programa su primera clase Java
![Page 12: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/12.jpg)
DI Demo
• Satisfecho con su trabajo el equipo de sistemas, coloca el proyecto
bajo control de versiones, pero, para no fallar en su demo al equipo
de marketing, decide hacer un unit tests
¿Qué problemas ves en el test case?
![Page 13: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/13.jpg)
DI Demo
• Lo malo del test case es que por tener la Super Velocidad en duro.
Indirectamente estas probando la Super Velocidad, es decir, no hay
manera de invocar Superman.doSuperCosas() sin también invocar
al método usar de SuperVelocidad.
¿Quién llama a quién?
El problema es que el mismo Superman
es el encargado de obtener sus
superpoderes.
Por eso no hay forma de testear
Superman aisladamente, puesto que,
cada vez que probemos a Superman,
también estaremos testeando su
SuperVelocidad.
![Page 14: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/14.jpg)
DI Demo
• Usaremos entonces una técnica común para reducir
acoplamiento. Esta técnica consiste en ocultar los detalles de la
implementación detrás de interfaces. De manera que la
implementación se pueda cambiar sin impactar a la clase cliente.
![Page 15: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/15.jpg)
DI Demo
• Cambiamos ahora SuperVelocidad para implementar la interface
• Cambiamos también Superman para implementar la interface
SuperHeroe
![Page 16: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/16.jpg)
DI Demo
• Ocultar las implementaciones detrás de interfaces es el camino
correcto. Pero, muchos desarrolladores fallan en como usar estas
interfaces para desacoplar objetos. Por ejemplo, veamos esta
versión.
¿Superman debe el mismo obtener su super velocidad u obtenerlo
de alguna fuerza externa? // hemos visto la película no?
![Page 17: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/17.jpg)
DI Demo
• Ahora consideremos la siguiente versión:
¿Vemos la diferencia?
![Page 18: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/18.jpg)
DI Demo
• La responsabilidad ahora pertenece a los objetos.
![Page 19: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/19.jpg)
DI Demo
• Configuramos Spring para poder utilizar la inyección de
dependencias
• Creamos
SuperMain
para probar
![Page 20: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/20.jpg)
Enjoy!
![Page 21: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/21.jpg)
Curso de Groovy & Grails
![Page 22: Spring Inyección De Dependencias](https://reader034.vdocumento.com/reader034/viewer/2022042522/55d58275bb61ebc4348b45b8/html5/thumbnails/22.jpg)
Av. Canavall y Moreyra 380, 6to Piso, San Isidro
Lima – Perú
(511) 985806981 | (511) 985419781
www.joedayz.org