一、web容器在啓動的時候,會掃描每一個jar包下的META-INF/services/javax.servlet.ServletContainerInitializer 二、加載這個文件指定的類SpringServletContainerInitializer 三、spring的應用一啓動會加載感興趣的WebApplicationInitializer接口的下的全部組件; 四、而且爲WebApplicationInitializer組件建立對象(組件不是接口,不是抽象類) 1)、AbstractContextLoaderInitializer:建立根容器;createRootApplicationContext(); 2)、AbstractDispatcherServletInitializer: 建立一個web的ioc容器;createServletApplicationContext(); 建立了DispatcherServlet;createDispatcherServlet(); 將建立的DispatcherServlet添加到ServletContext中; getServletMappings(); 3)、AbstractAnnotationConfigDispatcherServletInitializer:註解方式配置的DispatcherServlet初始化器 建立根容器:createRootApplicationContext() getRootConfigClasses();傳入一個配置類 建立web的ioc容器: createServletApplicationContext(); 獲取配置類;getServletConfigClasses(); 總結: 以註解方式來啓動SpringMVC;繼承AbstractAnnotationConfigDispatcherServletInitializer; 實現抽象方法指定DispatcherServlet的配置信息; =========================== 定製SpringMVC; 1)、@EnableWebMvc:開啓SpringMVC定製配置功能; <mvc:annotation-driven/>; 2)、配置組件(視圖解析器、視圖映射、靜態資源映射、攔截器。。。) extends WebMvcConfigurerAdapter