1、web容器在啟動的時候,會掃描每個jar包下的META-INF/services/javax.servlet.ServletContainerInitializer
2、加載這個文件指定的類SpringServletContainerInitializer
3、spring的應用一啟動會加載感興趣的WebApplicationInitializer接口的下的所有組件;
4、并且為WebApplicationInitializer組件創(chuàng)建對象(組件不是接口,不是抽象類)
1)、AbstractContextLoaderInitializer:創(chuàng)建根容器;createRootApplicationContext();
2)、AbstractDispatcherServletInitializer:
創(chuàng)建一個web的ioc容器;createServletApplicationContext();
創(chuàng)建了DispatcherServlet;createDispatcherServlet();
將創(chuàng)建的DispatcherServlet添加到ServletContext中;
getServletMappings();
3)、AbstractAnnotationConfigDispatcherServletInitializer:注解方式配置的DispatcherServlet初始化器
創(chuàng)建根容器:createRootApplicationContext()
getRootConfigClasses();傳入一個配置類
創(chuàng)建web的ioc容器: createServletApplicationContext();
獲取配置類;getServletConfigClasses();
總結:
以注解方式來啟動SpringMVC;繼承AbstractAnnotationConfigDispatcherServletInitializer;
實現(xiàn)抽象方法指定DispatcherServlet的配置信息;