package spittr.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import spittr.web.WebConfig;
public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
代码中的getServletMappings()
,它会将一个或多个路径映射到DispatcherServlet
上。在本例中,它映射的是“/”,这表示它会是应用的默认
Servlet。它会处理进入应用的所有请求。
扩展AbstractAnnotationConfigDispatcherServletInitializer
的任意类都会自动地配置DispatcherServlet
和Spring应用上下文,Spring的应用上下文会位于应用程序的Servlet上下文之中。
Serverlet配置在Spring中的继承实现顺序——AbstractAnnotationConfigDispatcherServletInitializer剖析
在Servlet 3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer
接口的类,如果能发现的话,就会用它来配置Servlet容器。
Spring提供了这个接口的实现,名为SpringServletContainerInitializer
,这个类反过来又会查找实现WebApplicationInitializer
的类并将配置的任务交给它们来完成。
Spring 3.2引入了一个便利的Web ApplicationInitializer
基础实现,也就是AbstractAnnotationConfigDispatcherServletInitializer
。
所以我们自己写的配置类只要扩展了AbstractAnnotationConfigDispatcherServletInitializer
(自然也就实现了他的父类WebApplicationInitializer
)
这样当部署到Servlet 3.0容器中的时候,容器会自动发现它,并用它来配置Servlet上下文。
参考:《Spring In Action》第四版