SlideShare a Scribd company logo
1 of 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!

More Related Content

What's hot

[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...
[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...
[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...
devops REX
 
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
Jorge Tressino Rua
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
Kazumune Katagiri
 

What's hot (20)

Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩みKeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
 
SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean Architecture
 
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
 
CI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality EngineeringCI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality Engineering
 
A Linguagem sql
A Linguagem sqlA Linguagem sql
A Linguagem sql
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...
[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...
[devops REX 2017] Days of Chaos : le développement de la culture devops chez ...
 
Advanced Content Workflow Using GitHub and Markdown
Advanced Content Workflow Using GitHub and MarkdownAdvanced Content Workflow Using GitHub and Markdown
Advanced Content Workflow Using GitHub and Markdown
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
 
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
 
How to Build a DevOps Toolchain
How to Build a DevOps ToolchainHow to Build a DevOps Toolchain
How to Build a DevOps Toolchain
 
MuleSoft Anypoint Platformのコンセプトとサービス
MuleSoft Anypoint PlatformのコンセプトとサービスMuleSoft Anypoint Platformのコンセプトとサービス
MuleSoft Anypoint Platformのコンセプトとサービス
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 

Viewers also liked

Viewers also liked (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 to 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’
 

More from Jose Luis Bugarin Peche

More from 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
 
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
 
Almacenaniento Datos Android - SQL LITE
Almacenaniento Datos Android - SQL LITEAlmacenaniento Datos Android - SQL LITE
Almacenaniento Datos Android - SQL LITE
 

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!