Serverlet配置在Spring中的继承实现顺序——AbstractAnnotationConfigDispatcherServletInitializer剖析

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》第四版
发布了52 篇原创文章 · 获赞 9 · 访问量 6233

猜你喜欢

转载自blog.csdn.net/weixin_43553694/article/details/104246374