Una aplicación empresarial típica no consta de un solo objeto (o bean en la terminología de Spring). Incluso en la aplicación más simple, hay varios objetos que trabajan juntos para crear lo que el usuario final ve como una aplicación coherente y coherente. A continuación se explica cómo pasar de definir unas pocas definiciones de beans independientes a una aplicación completamente realizada en la que los objetos interactúan entre sí para producir un resultado.

La inyección de dependencia (DI) es el proceso mediante el cual los objetos definen sus dependencias (es decir, otros objetos sobre los que operan) únicamente a través de argumentos del constructor, argumentos del método de fábrica o propiedades que se establecen en una instancia del objeto después de su creación. creado o devuelto desde el método de fábrica. Luego, el contenedor inyecta estas dependencias cuando se crea el bean. Este proceso es esencialmente una inversión (de ahí el nombre, Inversión de Control) del propio bean, que controla de forma independiente la creación o ubicación de sus dependencias mediante la construcción directa de clases o un patrón de Localizador de Servicios.

El código se vuelve más limpio gracias al principio DI, y la separación es más eficiente si a los objetos se les asignan sus propias dependencias. El objeto no busca sus dependencias y no conoce la ubicación o clase de las dependencias. Como resultado, las clases se vuelven más fáciles de probar, especialmente si las dependencias están en interfaces o clases base abstractas, lo que permite usar implementaciones de una función auxiliar u objeto simulado en pruebas unitarias.

DI viene en dos versiones principales: inyección de dependencia basada en constructor e inyección de dependencia basada en definidor.