少年易学老难成,一寸光阴不可轻。
XML配置
按传统方式将DispatcherServlet这样的Servlet配置在web.xml中。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/root-context.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
Java配置
借助于Servlet 3.0 规范和Spring 3.1 的功能增强,我们可以使用Java将DispatcherServlet配置在Servlet容器中。
package chapter5; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class SpttrWebAppInitialzer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { // TODO Auto-generated method stub return new Class<?>[] { RootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { // TODO Auto-generated method stub return new Class<?>[] { WebConfg.class }; } @Override protected String[] getServletMappings() { // TODO Auto-generated method stub return new String[] { "/" }; } }
1.扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动配置 DispatcherServlet 和 Spring 应用上下文。
2.当DispatcherServlet启动时,它会创建Spring应用上下文并加载配置文件或配置类中所声明的bean,但是在Spring WEB应用中,还存在由ContextLoaderListener创建的应用上下文用于加载应用中其他的bean(通常是驱动应用后端的中间层和数据层组件)。
3.通过AbstractAnnotationConfigDispatcherServletInitializer来配置DispatcherServlet只能部署到支持Servlet 3.0 的服务器中才能正常工作。