Spring Inyección De Dependencias

6,000 views

Published on

Actualizado a la versión Spring 3.0

Published in: Education, Technology, Business
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total views
6,000
On SlideShare
0
From Embeds
0
Number of Embeds
152
Actions
Shares
0
Downloads
136
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Spring Inyección De Dependencias

  1. 1. Inyección de DependenciasSpring 3.0 Ágil Java José Díaz Díaz CEO JoeDayz E-mail: [email_address] Web: http://www.joedayz.org Twitter: joedayz
  2. 2. Objetivos de la Presentación Ágil Java Entender uno de los pilares del Spring Framework. La inyección de Dependencias.
  3. 3. Datos del Speaker Ágil Java <ul><li>Consultor, Instructor, Mentor, Autor </li></ul><ul><li>Trabajo con Java Empresarial, Desarrollo Web y Tecnologías Open Source desde hace 10 años </li></ul><ul><li>CEO JoeDayz, capacitando y desarrollando proyectos en el Estado y empresas privadas a nivel nacional e internacional </li></ul><ul><li>Speaker frecuente en eventos y conferencias relacionadas a Java y Spring </li></ul><ul><li>Escribiendo libro sobre Spring 3 para este 2010 </li></ul>
  4. 4. Ágil Java
  5. 5. Agenda Ágil Java <ul><li>Introducción de Spring Framework </li></ul><ul><li>Misión de Spring </li></ul><ul><li>Módulos de Spring </li></ul><ul><li>Inyección de Dependencias </li></ul>
  6. 6. Introducción a Spring Framework Ágil Java <ul><li>Simplifica J2EE </li></ul><ul><li>Administra las dependencias entre componentes </li></ul><ul><li>Framework Liviano </li></ul><ul><li>Inyección de Dependencias (DI) </li></ul><ul><li>Orientado a Aspectos (AOP) </li></ul><ul><li>Contenedor </li></ul><ul><li>Framework a la Carta </li></ul>
  7. 7. Misión de Spring Ágil Java
  8. 8. Módulos de Spring Ágil Java
  9. 9. Inyección de Dependencias (DI) <ul><li>Antes llamado Inversion de Control </li></ul><ul><li>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 ”. </li></ul><ul><li>La clave o beneficio de DI es el pobre </li></ul><ul><li>acoplamiento . Si un objeto solo conoce sus </li></ul><ul><li>dependencias, a través, de su interface , </li></ul><ul><li>entonces la dependencia puede ser </li></ul><ul><li>Cambiada con una diferente implementación </li></ul><ul><li>cuando se nos apetezca, sin que </li></ul><ul><li>el objeto dependiente sepa del cambio </li></ul><ul><li>o la diferencia. </li></ul>
  10. 10. <ul><li>a </li></ul>DI Demo
  11. 11. DI Demo <ul><li>Perú necesita un héroe y a tu empresa (área de marketing) no se le ocurrió mejor idea que crear un superhéroe. </li></ul><ul><li>El departamento de informática excitado agarra su IDE favorito y programa su primera clase Java </li></ul>
  12. 12. DI Demo <ul><li>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 </li></ul><ul><li>¿Qué problemas ves en el test case? </li></ul>
  13. 13. DI Demo <ul><li>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 . </li></ul><ul><li>¿Quién llama a quién? </li></ul><ul><li>El problema es que el mismo Superman </li></ul><ul><li>es el encargado de obtener sus </li></ul><ul><li>superpoderes. </li></ul><ul><li>Por eso no hay forma de testear </li></ul><ul><li>Superman aisladamente, puesto que, </li></ul><ul><li>cada vez que probemos a Superman, </li></ul><ul><li>también estaremos testeando su </li></ul><ul><li>SuperVelocidad. </li></ul>
  14. 14. DI Demo <ul><li>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. </li></ul>
  15. 15. DI Demo <ul><li>Cambiamos ahora SuperVelocidad para implementar la interface </li></ul><ul><li>Cambiamos también Superman para implementar la interface SuperHeroe </li></ul>
  16. 16. DI Demo <ul><li>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. </li></ul>¿Superman debe el mismo obtener su super velocidad u obtenerlo de alguna fuerza externa? // hemos visto la película no?
  17. 17. DI Demo <ul><li>Ahora consideremos la siguiente versión: </li></ul>¿Vemos la diferencia?
  18. 18. DI Demo <ul><li>La responsabilidad ahora pertenece a los objetos. </li></ul>
  19. 19. DI Demo <ul><li>Configuramos Spring para poder utilizar la inyección de dependencias </li></ul><ul><li>Creamos </li></ul><ul><li>SuperMain </li></ul><ul><li>para probar </li></ul>
  20. 20. Enjoy!
  21. 21. Curso de Groovy & Grails
  22. 22. Av. Canavall y Moreyra 380, 6to Piso, San Isidro Lima – Perú (511) 985806981 | (511) 985419781 www.joedayz.org [email_address]

×