美文网首页
1、DispatcherServlet的初始化分析

1、DispatcherServlet的初始化分析

作者: 那谁319 | 来源:发表于2019-05-31 22:44 被阅读0次

DispatcherServlet的初始化过程

源码学习上下文

  • DispatcherServlet本身就是一个servlet,所以当web容器(Tomcat)启动加载servlet对象到内存后,会调用servlet生命周期中的init()方法触发servlet实现类的初始化逻辑,于是DispatcherServlet的初始化分析从执行init()方法开始。


    DispatcherServlet.png

init()方法的实现逻辑

init.png

initServletBean()执行逻辑

initServletBean.png
  • 从源码截图中可以看到主要逻辑是执行initWebApplicationContext()方法。

initWebApplicationContext()执行逻辑

initWebApplicationContext.png
  • 553行创建应用上下文
  • 560行根据上下文信息由子类重写特定逻辑

createWebApplicationContext(rootContext)执行逻辑

  • createWebApplicationContext(rootContext)
    • createWebApplicationContext((ApplicationContext) parent)
      • configureAndRefreshWebApplicationContext(wac)
configureAndRefreshWebApplicationContext.png
  • 由上图源码可以看到,会通过调用refresh()来完成spring 对bean的管理。
  • 这个refresh()方法的执行逻辑主要会完成和spring mvc 相关的bean的定义和加载,粗略来说基于mvc标签在xml文件中定义的信息都会找到对应的处理逻辑,由于涉及的内容过多,这个点留在后续分析

DispatcherServlet.onRefresh(wac)执行逻辑

onRefresh.png
  • onRefresh由子类DispatcherServlet重写,可以看到方法内部调用initStrategies(context)。
  • 很明显,initStrategies方法内部会初始化各个策略接口的实现类。
    • 请求映射处理初始化initHandlerMappings方法; 分析
    • 请求映射处理适配器初始化initHandlerAdapters方法;分析
    • 异常处理初始化initHandlerExceptionResolvers方法;分析
    • 视图处理初始化initViewResolvers方法;分析

自此DispatcherServlet的初始化逻辑执行完成,后续就是等待请求进来,处理请求的过程。

相关文章

网友评论

      本文标题:1、DispatcherServlet的初始化分析

      本文链接:https://www.haomeiwen.com/subject/zasntctx.html