在使用SpringMVC
时,最重要的2个类就是DispatcherServlet
和ContextLoaderListener
。DispatcherServlet
加载包含Web组件的bean,如控制器、视图解析器以及处理器映射,ContextLoaderListener
加载应用中的其他bean(通常是驱动应用后端的中间层和数据层组件)。
Servlet 3.0之后
servlet3.0规范出来后,spring3.2有了一种简便的搭建方式。
直接继承AbstractAnnotationConfigDispatcherServletInitializer
即可。
这个类会自动创建DispatcherServlet和ContextLoaderListener。这种方式不再需要web.xml,非常方便。
原理
在Servlet 3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果能发现的话,就会用它来配置Servlet容器。
Spring提供了这个接口的实现,名为SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配置的任务交给它们来完成。
Spring 3.2引入了一个便利的WebApplicationInitializer基础实现,也就是AbstractAnnotationConfigDispatcherServletInitializer。
所以我们只要继承AbstractAnnotationConfigDispatcherServletInitializer(同时也就实现了WebApplicationInitializer),在部署到Servlet 3.0容器中的时候,容器会自动发现它,并用它来配置Servlet上下文。
|
|
Servlet 3.0之前
如果你要部署在不支持servlet3.0的容器,比如tomcat6和以下版本,那就只能通过web.xml来配置了。