80 votos

¿Cuál es la diferencia entre el ApplicationContext y WebApplicationContext en Spring MVC?

Posibles Duplicados:
diferencia entre applicationContext y spring-servlet.xml en la primavera de

¿Cuál es la diferencia entre el Contexto de Aplicación y el Contexto de Aplicación Web?

Soy consciente de que WebApplicationContext se utiliza para la Primavera de la arquitectura MVC de aplicaciones orientadas a?

Quiero saber lo que es el uso de ApplicationContext en aplicaciones de MVC? ¿Qué tipo de frijoles se definen en ApplicationContext?

125voto

Boris Treukhov Puntos 5564

El contexto de Aplicación Web extendida en el Contexto de Aplicación que está diseñado para trabajar con el estándar javax.servlet.ServletContext por lo que es capaz de comunicarse con el contenedor.

public interface WebApplicationContext extends ApplicationContext {
    ServletContext getServletContext();
}

Frijoles, instancia en WebApplicationContext también será capaz de utilizar ServletContext con la implementación de la interfaz ServletContextAware

package org.springframework.web.context;
public interface ServletContextAware extends Aware { 
     void setServletContext(ServletContext servletContext);
}

Hay muchas cosas que es posible hacer con el ServletContext instancia, por ejemplo el acceso a WEB-INF recursos(xml configs y etc.) llamando a la getResourceAsStream() método. Normalmente todos los contextos de aplicación definido en web.xml en un servlet de Primavera de la aplicación Web son los contextos de Aplicación, este va a la raíz de la webapp y el contexto del servlet de la aplicación de contexto.

También, dependiendo del contexto de aplicación web de las capacidades puede hacer que su aplicación un poco más difícil de la prueba, y puede que necesite utilizar MockServletContext clase de pruebas.

La diferencia entre el servlet y la raíz de contexto La primavera le permite construir multinivel en el contexto de aplicación de las jerarquías, por lo que la vaina se pueden recuperar a partir de la matriz de contexto si no está presente en el actual contexto de aplicación. En aplicaciones web como por defecto hay dos niveles de jerarquía, de la raíz y servlet contextos:enter image description here

tal cosa permite ejecutar algunos servicios, como los embarazos únicos para toda la aplicación(Primavera Seguridad de granos básicos y de la base de datos de los servicios de acceso normalmente residen aquí) y otro separado de servicios en la correspondiente servlets para evitar los conflictos de nombres entre los granos. Por ejemplo, de un contexto de servlet para servir las páginas web y otra será la implementación de un estado de servicio web.

Este nivel dos separación sale de la caja cuando se utiliza la primavera servlet clases: para configurar la raíz de contexto de la aplicación debe utilizar context-param de la etiqueta en la web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/root-context.xml
            /WEB-INF/applicationContext-security.xml
    </param-value>
</context-param>

(la raíz de contexto de la aplicación es creada por ContextLoaderListener la que se declara en web.xml

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 

) y servlet etiqueta para el sevlet los contextos de aplicación

<servlet>
   <servlet-name>myservlet</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>app-servlet.xml</param-value>
   </init-param>
</servlet>

por favor, tenga en cuenta que si init-param se omite, la primavera va a utilizar myservlet-servlet.xml en este ejemplo.

Ver también: diferencia entre applicationContext y spring-servlet.xml en la primavera de

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X