Contexto do aplicativo da Web estendido Contexto do aplicativo, projetado para funcionar com o javax.servlet.ServletContext padrão, para que ele possa se comunicar com o contêiner.
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
Beans, instanciados em WebApplicationContext também poderão usar ServletContext se implementarem a interface ServletContextAware
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
É possível fazer muitas coisas com a instância ServletContext, por exemplo, acessar recursos WEB-INF (configurações xml e etc.) chamando o método getResourceAsStream (). Normalmente, todos os contextos de aplicativos definidos em web.xml em um servlet Spring são contextos de aplicativos da Web, isso vai para o contexto de aplicativo da web raiz e para o contexto de aplicativo do servlet.
Além disso, dependendo dos recursos de contexto do aplicativo da Web, o aplicativo pode ser um pouco mais difícil de testar e você pode precisar usar a classe MockServletContext para teste.
Diferença entre o servlet e o contexto raiz O
Spring permite criar hierarquias de contexto de aplicativo multinível, para que o bean necessário seja buscado no contexto pai, se não estiver presente no contexto atual do aplicativo. Em aplicações web como padrão, existem dois níveis de hierarquia, raiz e servlet contextos: .
Isso permite que você execute alguns serviços como os singletons de todo o aplicativo (beans Spring Security e serviços básicos de acesso ao banco de dados geralmente residem aqui) e outro como serviços separados nos servlets correspondentes para evitar conflitos de nomes entre os beans. Por exemplo, um contexto de servlet servirá as páginas da Web e outro implementará um serviço da Web sem estado.
Essa separação de dois níveis sai da caixa quando você usa as classes de servlet spring: para configurar o contexto do aplicativo raiz, você deve usar a tag context-param em seu 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>
(o contexto do aplicativo raiz é criado por ContextLoaderListener, declarado em web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) e tag de servlet para os contextos do aplicativo 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>
Observe que, se init-param for omitido, o spring usará myservlet-servlet.xml neste exemplo.
Consulte também: Diferença entre applicationContext.xml e spring-servlet.xml no Spring Framework
web.xml
arquivo; esta pergunta está perguntando sobre algumas aulas da primavera.