SlideShare una empresa de Scribd logo
1 de 24
Curso de Spring
Introducción a la Inyección de
Dependencias
jbugarin@consultorjava.com
@jlbugarin
AGENDA
• ¿Qué es y por que Inyección de Dependencias
(ID).
• Inyección de Dependencias en Spring
Framework.
• ID Parámetros.
• Bean Naming.
Inyección de Dependencias /
Dependency Injection
• El rey de la inverion de control (IoC)
• Principio Hollywood
– No me llames, yo te llamare

• El contenedor de inyeccion de Dependencias
resuelve la dependencia de componentes
mediante wiring / injecting un objeto.
• Martin Fowler es el que acuño el termino
¿Por qué Inyección de
Dependencias?
• Flexible
– No hay necesidad de tener un código de búsqueda en la
lógica de negocio.
• Testeable
– No se necesita un espacio especifico de testeo
– Testeo automático como parte de las construcciones
• Mantenible
– Permite la reutilización en diferentes entornos de
aplicaciones modificando los archivos de configuración en
lugar del código.
– Promueve un enfoque coherente en todos aplicaciones y
equipos
2 Variantes de Inyección de
Dependencias

• Inyección de Dependencias por constructor
– La dependencia se da a través de l constructor de
una clase

• Inyección de Dependencias por setter
– Las dependencias se proporcionan a través de los
métodos de una clase al estilo JavaBean.
– Es mas popular la inyección de dependencias por
constructor.
Ejemplo
Ejemplo
Clases para la Inyección de
Dependencias en Spring
• BeanFactory Interface
• Clases de Implementación
– XMLBEANFACTORY
– CLASSPATHAPPLOCATION CONTEXT
Ejemplo de Referencia
Ejemplo de Referencia
Ejemplo de Referencia
Archivo de configuración de beans
Beans Configuration File
• El bean se define dentro del tag <bean> y este
tag esta dento de la raiz <beans>.
• El atributo id, se usa para darle el nombre al
bean.
• El atributo class, se usa para indicarle la clase
que tiene un id para poderlo inyectar.
Ejemplo de Configuración
Ejemplo de Referencia – Setter ID
Ejemplo de Referencia – DI
Constructor
Ejemplo Referencia - DI
Constructor
BEANS
• El termino bean es usado para referirnos a
cualquier componente administrado por el
BeanFactory.
• Beans es lo mismo que un Java Bean.
• Propiedades / atributos de los beans son
simples o valrores que hacen referencia a
otros beans.
• Los Beans pueden tener multiples nombres
DI PARAMETERS TYPES
• Spring soporta los siguientes parametros de
inyeccion:
– Valores Simples
– Beans
– Collecciones / Listas

• Estos parametros se usan para inyeccion de
setter o de constructor.
Inyección de Valores Simples
Inyección de Beans
• Se usa cuando necesitas inyectar un bean en otro.
• Ambos beans deben de estar declarados para que puedan
funcionar.
• Declarar la inyección con usando el tag ref.
• El tipo que se inyecta no tiene que ser e tipo exacto definido
en la referencia.
– Si el tipo definido en el objetivo es una interfaz, el tipo
inyectado debe ser una implementación de ella.
– Si el tipo definido en el objetivo es una clase, el tipo
inyectado puede ser del mismo tipo o subtipo.
Ejemplo Inyección de Beans
Ejemplo de inyección de beans
Ejemplo de Bean Naming
Ing. Jose Luis Bugarin – jbugarin@consultorjava.com - @jlbugarin

GRACIAS!

Más contenido relacionado

La actualidad más candente

INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
Darwin Durand
 
Metodología xp
Metodología xpMetodología xp
Metodología xp
Piskamen
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
Marvin Zumbado
 

La actualidad más candente (20)

Pruebas de caja blanca y negra
Pruebas  de caja blanca y negraPruebas  de caja blanca y negra
Pruebas de caja blanca y negra
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Diferencias entre scrum y xp
Diferencias entre scrum y xp Diferencias entre scrum y xp
Diferencias entre scrum y xp
 
Team Software Process (TSP)
Team Software Process  (TSP)Team Software Process  (TSP)
Team Software Process (TSP)
 
UML
UMLUML
UML
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
 
Modelo de requerimientos
Modelo de requerimientosModelo de requerimientos
Modelo de requerimientos
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de software
 
Análisisde requerimientos
Análisisde requerimientosAnálisisde requerimientos
Análisisde requerimientos
 
Arquitectura fisica y logica
Arquitectura fisica y logicaArquitectura fisica y logica
Arquitectura fisica y logica
 
Guia para realizar una correcta interfaz gráfica de usuario
Guia para realizar una correcta interfaz gráfica de usuarioGuia para realizar una correcta interfaz gráfica de usuario
Guia para realizar una correcta interfaz gráfica de usuario
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
Modelo entidad relacion extendido
Modelo entidad relacion  extendidoModelo entidad relacion  extendido
Modelo entidad relacion extendido
 
Metodología xp
Metodología xpMetodología xp
Metodología xp
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
Documento Vision
Documento VisionDocumento Vision
Documento Vision
 
prueba de aplicaciones convencionales
prueba de aplicaciones convencionalesprueba de aplicaciones convencionales
prueba de aplicaciones convencionales
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
 
Recursividad
RecursividadRecursividad
Recursividad
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
 

Destacado

Destacado (6)

Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
Inyección de Dependencias: Como inyectar código sin morir de sobre dosis…
 
Curso JSF - Conceptos Basicos
Curso JSF - Conceptos BasicosCurso JSF - Conceptos Basicos
Curso JSF - Conceptos Basicos
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 
Desarrollo empresarial con java
Desarrollo empresarial con javaDesarrollo empresarial con java
Desarrollo empresarial con java
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependencia
 

Similar a Spring - Inyección de Dependencias (8)

CDI para Java EE 7
CDI para Java EE 7CDI para Java EE 7
CDI para Java EE 7
 
spring framework
spring frameworkspring framework
spring framework
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overview
 
05.Principio.Inversion.Control.pdf
05.Principio.Inversion.Control.pdf05.Principio.Inversion.Control.pdf
05.Principio.Inversion.Control.pdf
 
Jpa
JpaJpa
Jpa
 
Buenas Prácticas para la Construcción de Aplicaciones de Software
Buenas Prácticas para la Construcción de Aplicaciones de SoftwareBuenas Prácticas para la Construcción de Aplicaciones de Software
Buenas Prácticas para la Construcción de Aplicaciones de Software
 
Curso de Spring: Beans
Curso de Spring: BeansCurso de Spring: Beans
Curso de Spring: Beans
 
Rest api con spring boot en 40’
Rest api con spring boot en 40’Rest api con spring boot en 40’
Rest api con spring boot en 40’
 

Más de Jose Luis Bugarin Peche

Más de Jose Luis Bugarin Peche (20)

ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
 
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con JavaILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
 
Gestión de Rendimiento en Aplicaciones Java - APM
Gestión de Rendimiento en Aplicaciones Java - APMGestión de Rendimiento en Aplicaciones Java - APM
Gestión de Rendimiento en Aplicaciones Java - APM
 
Inteligencia artificial en las Empresas
Inteligencia artificial en las EmpresasInteligencia artificial en las Empresas
Inteligencia artificial en las Empresas
 
Arquitectura de Apis & GRPC | #JCONFPERU
Arquitectura de Apis & GRPC | #JCONFPERUArquitectura de Apis & GRPC | #JCONFPERU
Arquitectura de Apis & GRPC | #JCONFPERU
 
Amazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
Amazon ec2 | Jose Luis bugarin | Arquitecto EmpresarialAmazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
Amazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
 
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis BugarinAprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
 
Ecosistema Tecnología Java
Ecosistema Tecnología JavaEcosistema Tecnología Java
Ecosistema Tecnología Java
 
Transformación Digital | Enfoque para Estudiantes Universitarios
Transformación Digital | Enfoque para Estudiantes UniversitariosTransformación Digital | Enfoque para Estudiantes Universitarios
Transformación Digital | Enfoque para Estudiantes Universitarios
 
¿Que son los microservicios?
¿Que son los microservicios?¿Que son los microservicios?
¿Que son los microservicios?
 
Comunicar la tierra con la nube jlbugarin v1.0
Comunicar la tierra con la nube jlbugarin v1.0Comunicar la tierra con la nube jlbugarin v1.0
Comunicar la tierra con la nube jlbugarin v1.0
 
Sistemas Distribuidos Introduccion
Sistemas Distribuidos IntroduccionSistemas Distribuidos Introduccion
Sistemas Distribuidos Introduccion
 
Iluminatic facturacion electronica_referencia
Iluminatic facturacion electronica_referenciaIluminatic facturacion electronica_referencia
Iluminatic facturacion electronica_referencia
 
Arquitectura empresarial
Arquitectura empresarial Arquitectura empresarial
Arquitectura empresarial
 
Introduccion inteligencia negocios | business intelligence
Introduccion inteligencia negocios | business intelligenceIntroduccion inteligencia negocios | business intelligence
Introduccion inteligencia negocios | business intelligence
 
Servicios Web en Android
Servicios Web en AndroidServicios Web en Android
Servicios Web en Android
 
Tecnologías de la Información y Comunicación en la Contabilidad...
Tecnologías de la Información y Comunicación en la Contabilidad...Tecnologías de la Información y Comunicación en la Contabilidad...
Tecnologías de la Información y Comunicación en la Contabilidad...
 
Administracion servidores linux
Administracion servidores linuxAdministracion servidores linux
Administracion servidores linux
 
Mejoras en el lenguaje java 7
Mejoras en el lenguaje java 7Mejoras en el lenguaje java 7
Mejoras en el lenguaje java 7
 
Presentación inif open_day_2013
Presentación inif open_day_2013Presentación inif open_day_2013
Presentación inif open_day_2013
 

Spring - Inyección de Dependencias

  • 1. Curso de Spring Introducción a la Inyección de Dependencias jbugarin@consultorjava.com @jlbugarin
  • 2. AGENDA • ¿Qué es y por que Inyección de Dependencias (ID). • Inyección de Dependencias en Spring Framework. • ID Parámetros. • Bean Naming.
  • 3. Inyección de Dependencias / Dependency Injection • El rey de la inverion de control (IoC) • Principio Hollywood – No me llames, yo te llamare • El contenedor de inyeccion de Dependencias resuelve la dependencia de componentes mediante wiring / injecting un objeto. • Martin Fowler es el que acuño el termino
  • 4. ¿Por qué Inyección de Dependencias? • Flexible – No hay necesidad de tener un código de búsqueda en la lógica de negocio. • Testeable – No se necesita un espacio especifico de testeo – Testeo automático como parte de las construcciones • Mantenible – Permite la reutilización en diferentes entornos de aplicaciones modificando los archivos de configuración en lugar del código. – Promueve un enfoque coherente en todos aplicaciones y equipos
  • 5. 2 Variantes de Inyección de Dependencias • Inyección de Dependencias por constructor – La dependencia se da a través de l constructor de una clase • Inyección de Dependencias por setter – Las dependencias se proporcionan a través de los métodos de una clase al estilo JavaBean. – Es mas popular la inyección de dependencias por constructor.
  • 8. Clases para la Inyección de Dependencias en Spring • BeanFactory Interface • Clases de Implementación – XMLBEANFACTORY – CLASSPATHAPPLOCATION CONTEXT
  • 12. Archivo de configuración de beans Beans Configuration File • El bean se define dentro del tag <bean> y este tag esta dento de la raiz <beans>. • El atributo id, se usa para darle el nombre al bean. • El atributo class, se usa para indicarle la clase que tiene un id para poderlo inyectar.
  • 14. Ejemplo de Referencia – Setter ID
  • 15. Ejemplo de Referencia – DI Constructor
  • 16. Ejemplo Referencia - DI Constructor
  • 17. BEANS • El termino bean es usado para referirnos a cualquier componente administrado por el BeanFactory. • Beans es lo mismo que un Java Bean. • Propiedades / atributos de los beans son simples o valrores que hacen referencia a otros beans. • Los Beans pueden tener multiples nombres
  • 18. DI PARAMETERS TYPES • Spring soporta los siguientes parametros de inyeccion: – Valores Simples – Beans – Collecciones / Listas • Estos parametros se usan para inyeccion de setter o de constructor.
  • 20. Inyección de Beans • Se usa cuando necesitas inyectar un bean en otro. • Ambos beans deben de estar declarados para que puedan funcionar. • Declarar la inyección con usando el tag ref. • El tipo que se inyecta no tiene que ser e tipo exacto definido en la referencia. – Si el tipo definido en el objetivo es una interfaz, el tipo inyectado debe ser una implementación de ella. – Si el tipo definido en el objetivo es una clase, el tipo inyectado puede ser del mismo tipo o subtipo.
  • 23. Ejemplo de Bean Naming
  • 24. Ing. Jose Luis Bugarin – jbugarin@consultorjava.com - @jlbugarin GRACIAS!