DEV Community

Cover image for Spring - Inversion of Control
joanvasquez21
joanvasquez21

Posted on

Spring - Inversion of Control

La Inversion de Control (IoC) es un proceso donde los objetos definen sus dependencias, es decir, las dependencias de otros objetos con los que están trabajando. Se hace simplemente mediante un constructor de argumentos, un argumento a un método de fábrica, o estableciendo propiedades de los objetos cuando se están construyendo. Las dependencias son inyectadas por el contenedor cuando se crea el bean. La inversión de control (IoC) se puede lograr a través de diversas técnicas, como la inyección de dependencias (DI), el patrón de localización de servicios (SLP) y el patrón de diseño de estrategia (SDP).

Hay dos tipos de contenedores de IoC:

- BeanFactory: La interfaz de BeanFactory está disponible en el paquete org.springframework.beans. . Es la interfaz raíz para acceder al contenedor bean. También proporciona técnicas básicas de configuración para administrar los objetos bean de cualquier tipo. Podemos decir que _BeanFactory _es un método heredado para usar.

- ApplicationContext: La interfaz ApplicationContext está disponible en el paquete org.springframework.context. .Es un superconjunto completo de una interfaz BeanFactory. También se conoce como una interfaz central que proporciona la configuración a una aplicación.

Diferencia entre ApplicationContext y BeanFactory

Tanto ApplicationContext como BeanFactory son las interfaces Java ambas son los tipos de contenedor IoC. Pero la principal diferencia entre ambas interfaces es que BeanFactory proporciona las características básicas de IoC y DI, mientras que ApplicationContext ofrece las características avanzadas.

Algunas de las otras diferencias se dan a continuación:

  • La interfaz de BeanFactory no admite la internacionalización (i18n), mientras que ApplicationContext proporciona soporte para ella. La internacionalización es el proceso de construir una aplicación de tal manera que cualquier idioma pueda adaptarla sin ninguna modificación.
  • La interfaz de BeanFactory utiliza la técnica de inicialización perezosa(lazy initialization), mientras que ApplicationContext utiliza una inicialización ansiosa(eager initialization), es decir, BeanFactory crea solo un bean singleton cuando se solicita, pero ApplicationContext produce todos los beans singleton en el momento de la inicialización.
  • BeanFactory no admite la configuración basada en anotaciones, mientras que ApplicationContext admite anotaciones como @Autowired, @ComponentScan, etc.

Top comments (0)