2011-02-27 13 views
44

Estoy intentando comprender las jerarquías de ApplicationContext en primavera.¿Por qué usar las jerarquías Spring ApplicationContext?

I aprendido lo siguiente

  1. Un Application Context no puede tener más de 1 padres Application Context.
  2. Cuando un ApplicationContext dado no puede resolver un bean , pasará la solicitud de resolución a su principal.
  3. El elemento primario de se especifica ApplicationContext en su constructor.

Me gustaría saber cuándo utilizar las jerarquías de ApplicationContext (en lugar de un único ApplicationContext).

Lo mejor que pude obtener de google fue this. Y lo que entiendo es que si una aplicación tiene una gran cantidad de granos definidos en las distintas capas, entonces cada capa que tenga su propio ApplicationContext sería un beneficio. Lo que no se entiende es ¿cuál es el beneficio de hacerlo y cómo se logra el beneficio?

TIA, Vijay

Respuesta

43

El caso de uso clásico de esto es cuando se tiene la primavera múltiple DispatcherServlet dentro de una sola aplicación web, con cada uno de estos servlets que tengan su propio contexto de aplicaciones, pero que necesitan compartir los granos entre ellas . En este caso, agrega un tercer contexto al nivel de la aplicación web, que es el elemento principal de cada uno de los contextos de la aplicación servlet.

Puede seguir este patrón, por ejemplo, si tiene varias aplicaciones web agrupadas en un único elemento EAR de JavaEE. Aquí, el EAR puede tener su propio contexto, que es el padre de los contextos de la aplicación de Internet individuales, que es el padre de los contextos del servlet, y así sucesivamente. Usted tiene esta jerarquía de responsabilidad.

En otras situaciones, la estructura del contexto está dictada por algún otro factor. Por ejemplo, Spring Security es independiente de Spring MVC y requiere que sus beans de configuración entren en el contexto de la aplicación web. Si desea usar Spring MVC con él, la configuración para eso tiene que entrar en el contexto de servlet, que tiene el contexto raíz de la aplicación web como su elemento primario.

+6

En lectura adicional, entendí lo siguiente (skaffman ya ha indicado partes de esto). Cada aplicación web de Spring MVC tiene un contexto de aplicación raíz y un contexto de aplicación de servlet para cada DispatcherServlet. El contexto de la aplicación raíz es el principal de cada contexto de aplicación de servlet. Los beans definidos en "contextConfigLocation" (context-param en web.xml) se cargan en el contexto de la aplicación raíz. Los beans en -servlet.xml se cargan en el contexto de la aplicación de servlet. Si un EAR tiene múltiples aplicaciones web, un contexto de aplicación de nivel EAR puede ser el principal para el contexto raíz de cada aplicación web en EAR. –

+0

@ user636334: Sí, eso es todo. – skaffman

Cuestiones relacionadas