原理:
1、web容器在启动的时候,会扫描每个jar包下的META-INF/services/javax.servlet.ServletContainerInitializer
2、加载这个文件指定的类SpringServletContainerInitializer
3、spring的应用一启动会加载感兴趣的WebApplicationInitializer接口下的所有组件;
4、并且为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-driver/>
2)、配置组件(视图解析器、视图映射、静态资源映射.....................)
需要继承WebMvcConfigurerAdapter;
示例地址:https://github.com/Linece/-----springMVC