Principios de inyección de dependencia en Spring
En esencia, Spring es un contenedor DI diseñado para proporcionar un marco no intrusivo y altamente extensible. En otras palabras, el código administrado en el contenedor Spring no necesita involucrar clases propietarias de Spring.
Por el contrario, EJB es una especificación de marco altamente intrusiva que crea una gran cantidad de interfaces y convenciones de codificación que los implementadores deben seguir. La consecuencia de la intrusión es que una vez que un sistema se diseña y desarrolla sobre la base de un marco intrusivo, cualquier intento posterior de desviarse de ese marco será costoso.
Para evitar esta situación y lograr el objetivo de no intrusión, Spring introdujo el mecanismo Reflection de Java para evitar restricciones codificadas a través de llamadas dinámicas y construyó su componente central BeanFactory como su inyección de dependencia. el mecanismo.
El paquete org.springframework.beans contiene clases que implementan estos componentes principales, cuyo núcleo son las clases BeanWrapper y BeanFactory. Estas dos clases no son complejas desde una perspectiva técnica, pero son clave para el marco Spring.
InputStream?is?=?new?FileInputStream("bean.xml"); XmlBeanFactory?factory?=?new?XmlBeanFactory(is); Acción?action?=?(Action)?factory.getBean ("TheAction");
BeanFactory cargará la instancia de Acción obtenida en este momento e inicializará y establecerá propiedades de acuerdo con el archivo de configuración.
Combinado con el contenido anterior sobre BeanWrapper, puede ver que BeanWrapper implementa la operación de configuración de propiedades de un solo Bean. BeanFactory es un contenedor de gestión para varios beans. Según el archivo de configuración proporcionado, BeanFactory lee el nombre de la clase y el nombre/valor de la propiedad, luego carga el bean y establece sus propiedades a través del mecanismo de reflexión.