Spring mvc零配置源码阅读总结

Spring mvc零配置启动

  1. 运用spi技术加载spring-web.jar 下面的META-INF/services/java.servlet.ServletContainerInitializer文件
  2. ServletContainerInitializer类中的@HandlerTypes注解会加载所有的实现了WebApplicationInitializer接口的类
  3. 所有被加载的类,会被放到onStartup方法的参数中,
  4. onStartup方法会实例化所有实现了WebApplicationInitializer接口的类,并调用他们的onStartup方法
  5. 在onStartup方法中会调用父类的onStartup方法,创建servletListener用来初始化Spring容器
  6. 在onStartup方法中还会创建DispatcherServlet对象,DispatcherServlet对象的init方法会加载Spring mvc容器,被设置Spring容器为它的父容器
  7. HandlerMapping、HandlerAdapter、ViewResolver实例的实例化,是借助@EnableWebmMvc和@Bean实现的的,在@Bean中会有钩子方法,会调用父类的方法,而父类会通过@Autowired注解将所有实现了WebMvcConfigurer的实例加入到类属性中,方便用户自定义HandlerMapping、HandlerAdapter、ViewResolver

一个接口调用的流程

  1. servlet的service方法
  2. 调用JDK的super.service方法
  3. 区分请求类型,回调到spring-mvc包中的doGet/doPost/doPut/doDelete方法
  4. 都会统一调用processRequest方法
  5. 在processRequest中会调用doService方法
  6. 在doService方法中会调用doDispatch方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容