ServletWebServerApplicationContext
时间: 2024-08-15 08:04:39 浏览: 33
ApplicationContext容器的uml类图
`ServletWebServerApplicationContext` 是 Spring Framework 中的一个特定类型的 `AbstractApplicationContext`,它主要用于 Web 应用程序,特别是那些运行在基于 Servlet 的 Web 服务器(如 Tomcat)上的应用。它扩展了标准的 `ContextLoaderListener` 和 `WebApplicationContext` 类,允许你在 Web 容器启动时自动初始化并管理 Spring 应用上下文。
当你在一个基于 Servlet 的 Web 应用中使用 `ServletWebServerApplicationContext`,Spring会创建一个与当前 HTTP 请求关联的上下文,这样每个请求都会拥有自己的上下文实例,这有助于隔离不同的请求对应用资源的影响。
下面是如何在 Web.xml 或者通过 Java Configuration 演示如何配置 `ServletWebServerApplicationContext`:
**XML配置**:
```xml
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 使用 DispatcherServlet -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.ServletWebServerApplicationContext</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
```
**Java Configuration**:
```java
@Configuration
public class AppConfig {
@Bean
public WebMvcConfigurer configurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer support) {
support.setTaskExecutor(new SimpleAsyncTaskExecutor());
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
};
}
@Bean
public ServletWebServerApplicationContext context() {
ServletWebServerApplicationContext context = new ServletWebServerApplicationContext();
context.register(AppConfig.class);
context.refresh();
return context;
}
}
```
阅读全文