Spring mvc零配置源码阅读总结

2021-02-23  本文已影响0人  断忆残缘

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方法
上一篇下一篇

猜你喜欢

热点阅读