Java, Spring

¿Que es la inyección de dependencias?

Literalmente copiado de la Wikipedia; la Inyección de Dependencias (en inglés Dependency Injection, DI) es un patrón de diseño orientado a objetos, en el que se suministran objetos a una clase en lugar de ser la propia clase quien cree el objeto.

Dicho en otras palabras, si una clase necesita realizar operaciones cuya funcionalidad la proporcionan otras clases, es el desarrollador quien le inyecta los objetos necesarios para realizar dichas operaciones, de esta manera cuando se utilice la clase ésta ya contara con todo lo necesario para su correcto funcionamiento. Esto es a muy alto nivel es el concepto de inyección de dependencias.
A continuación se muestra el código de un ejemplo donde se realiza inyección de dependencias.

Ejemplo de DI

En este ejemplo, se podría haber creado una clase Auto, Bicicleta y Motocicleta con su respectivo método rodar(), crear una instancia (objeto) de la clase e invocarlo desde el método principal main(). Pero se optó por implementar polimorfismo con ayuda de una interface IVehiculo; de esta manera se pueden agregar más tipos de vehículos (Tractor, Trailer, etc.) y solamente implementar su método rodar() el cual todos comparten en común.

La idea de utilizar una interface va más allá de la funcionalidad descrita previamente; utilizar inyección de dependencias. La clase RodarVehiculo permite invocar el método rodar() de cualquier tipo de vehículo, basta con proporcionárselo (inyectarlo) previamente. De hecho RodarVehiculo podría invocar cualquier otro método de la interface IVehiculo, como se puede observar esta clase no necesita crear la instancia de ninguna clase particular puesto que ya se le está inyectando previamente, basta con usar los métodos de la clase.

Descarga del codigo fuente

Si deseas obtener los archivos de código fuente del ejemplo, desde GitHub te los puedes descargar: desde aquí, hay varios ejemplos, la carpeta de este tutorial se llama InyeccionDependencias.

El ejemplo que he expuesto anteriormente de inyeccion de dependencias es muy sencillo y solo lo he utilizado para ejemplificar el concepto. Pero la forma habitual de implementar este patrón con un framework como Spring, es mediante un “Contenedor DI”; las dependencias se inyectan mediante un archivo descriptor XML que el desarrollador crea y al levantarse el contexto de la aplicacion (Application Context) es el contenedor quien inyecta a cada objeto los objetos necesarios según las relaciones plasmadas en dicho fichero XML de configuración.

En un articulo posterior a este especificare en donde se esta realizando la inyeccion de dependencias en un ejemplo con el framework Spring. Si te gusto el tutorial no olvides dar like, así me motivas a continuar escribiendo sobre estos temas.

Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *