SpringMVC注解配置

学习SpringMVC完全丢弃配置文件,使用注解配置时遇到一些问题:
其中AbstractAnnotationConfigDispatcherServletInitializer这个类名超长类的作用是什么?是否就是这个类代替了原本的Springmvc-servlet.xml即Springmvc配置文件呢?
可以说这个类对应的是下图中的DispatcherServlet,其getServletConfigClasses(),getRootConfigClasses()方法是在DispatcherServlet中创建两个Ioc容器是吗?

public class MainInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{MainConfiguration.class};   //配置Spring的配置类
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[0];  //配置DispatcherServlet的配置类
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};    //匹配路径
    }
}

img

  1. 是为了去除web.xml。基于servlet3.0及以上的特性。只是servlet可以写在类中加载了
  2. dispatcherServlet只会创建一个容器,一般它的父容器为原xml中的ContextLoaderListener。见AbstractContextInitializer。