2012-04-24 14 views
11

Estoy un poco confundido con estos dos conceptos. Leyendo la documentación de Spring, descubrí, por ej. que las fábricas de frijoles son contenedores de primavera. También leí que "ApplicationContext es un superconjunto completo de BeanFactory". Pero la diferencia entre los dos no es evidente. Entonces cuál es la diferencia?¿Cuál es la diferencia entre un contexto de aplicación Spring y un contenedor Spring?

+3

Marque esta http://stackoverflow.com/questions/243385/new-to-spring-beanfactory-vs-applicationcontext de contexto de aplicación Vs fábrica de beans – xyz

+0

término también me confundió, después de leer de varias fuentes me fundadores el contenedor es básicamente donde viven los frijoles, y el diseño de la primavera es tal que puede acceder a estos frijoles y muchas otras funcionalidades usando el contexto. Spring tiene varias implementaciones de contexto para los propósitos respectivos. –

Respuesta

8

Respuestas de this link atribuida por Ajinkya es bastante amplia, sin embargo, me gustaría refererence algunos buenos puntos de otro material - Primavera en Acción (Manning Publicaciones):

En una aplicación basada en la primavera, su los objetos de aplicación vivirán dentro del contenedor Spring. Como se ilustra en la figura 2.1, el contenedor creará los objetos, los unirá, los configurará y administrará su ciclo de vida completo de la cuna a la tumba (o nuevo para finalizar() según sea el caso).

enter image description here

No hay ningún contenedor de primavera sola. Spring viene con varias implementaciones de contenedores que se pueden clasificar en dos tipos distintos. Las fábricas de frijoles (definidas por la interfaz org.springframework.beans.factory.BeanFactory) son las más simples de los contenedores, proporcionando soporte básico para DI. Los contextos de aplicación (definidos por la interfaz org.springframework.context.ApplicationContext) se basan en la noción de una fábrica de beans al proporcionar servicios de marco de aplicaciones, como la capacidad de resolver mensajes de texto desde un archivo de propiedades y la capacidad de publicar eventos de aplicaciones a interesados. oyentes de eventos.

En la superficie, un ApplicationContext es muy similar a un BeanFactory. Ambas definiciones de beans de carga, wire beans juntos, y dispensan beans a pedido. Pero un ApplicationContext ofrece mucho más:

  • Los contextos de aplicación proporcionan un medio para resolver mensajes de texto, incluido el soporte para la internacionalización (I18N) de esos mensajes.
  • Los contextos de aplicación proporcionan una forma genérica de cargar recursos de archivos, como imágenes.
  • Los contextos de aplicación pueden publicar eventos en beans que están registrados como escuchas.

Debido a la funcionalidad adicional que proporciona, se prefiere un ApplicationContext sobre un BeanFactory en casi todas las aplicaciones. Las únicas veces que podría considerar usar BeanFactory son en circunstancias en que los recursos son escasos, como un dispositivo móvil.

Aparte de la funcionalidad adicional ofrecida por los contextos de aplicación, otra gran diferencia entre un contexto de aplicación y una fábrica de beans es cómo se cargan los beans singleton. Una fábrica de frijoles carga perezosamente todos los frijoles, posponiendo la creación de frijoles hasta que se llame al método getBean(). Un contexto de aplicación es un poco más inteligente y precarga todos los beans singleton al iniciar el contexto. Al precargar beans de singleton, se asegura de que estarán listos para usar cuando sea necesario; su aplicación no tendrá que esperar a que se creen.

Cuestiones relacionadas