El contexto de la aplicación web amplió el contexto de la aplicación, que está diseñado para funcionar con el javax.servlet.ServletContext estándar para que pueda comunicarse con el contenedor.
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
Los beans, instanciados en WebApplicationContext también podrán usar ServletContext si implementan la interfaz ServletContextAware
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
Hay muchas cosas posibles para hacer con la instancia de ServletContext, por ejemplo, para acceder a los recursos WEB-INF (configuraciones xml y etc.) llamando al método getResourceAsStream (). Normalmente, todos los contextos de aplicación definidos en web.xml en una aplicación Spring de servlet son contextos de aplicación web, esto va tanto al contexto de la aplicación web raíz como al contexto de la aplicación del servlet.
Además, dependiendo de las capacidades de contexto de la aplicación web, puede hacer que su aplicación sea un poco más difícil de probar, y es posible que deba usar la clase MockServletContext para realizar pruebas.
Diferencia entre el servlet y el contexto raíz
Spring le permite construir jerarquías de contexto de aplicación multinivel, por lo que el bean requerido se obtendrá del contexto padre si no está presente en el contexto de aplicación actual. En las aplicaciones web por defecto hay dos niveles de jerarquía, de raíces y de servlets: contextos .
Esto le permite ejecutar algunos servicios como singletons para toda la aplicación (los beans de Spring Security y los servicios básicos de acceso a la base de datos generalmente residen aquí) y otros como servicios separados en los servlets correspondientes para evitar conflictos de nombres entre beans. Por ejemplo, un contexto de servlet servirá las páginas web y otro implementará un servicio web sin estado.
Esta separación de dos niveles sale de la caja cuando usa las clases de servlet de primavera: para configurar el contexto de la aplicación raíz, debe usar la etiqueta context-param en su 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>
(El contexto de la aplicación raíz es creado por ContextLoaderListener que se declara en web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) y la etiqueta de servlet para los contextos de aplicación de servlet
<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>
Tenga en cuenta que si se omite init-param, spring usará myservlet-servlet.xml en este ejemplo.
Consulte también: Diferencia entre applicationContext.xml y spring-servlet.xml en Spring Framework
web.xml
archivo; Esta pregunta es acerca de algunas clases de primavera.