zoukankan      html  css  js  c++  java
  • spring mvc源码跟踪流程

    一、spring mvc的流程:

    spi-Mete-info/接口 spring-web包里面META-INFO里面有个文件->SpringServletContainerInitializer - > AbstractDispatcherServletInitializer--onStartup->super.onStartup(servletContext)(监听器加载)
    ->registerDispatcherServlet(servletContext);(注册DispatcherServlet)

    监听器容器启动的时候执行默认方法自动加载spring的配置:
    ContextLoaderListener->contextInitialized()->initWebApplicationContext()->configureAndRefreshWebApplicationContext(spring容器的refresh执行)

    registerDispatcherServlet->createServletApplicationContext(mvc的配置)->createDispatcherServlet(创建中心servlet)->
    加载流程:
    DispatcherServlet是一个sevlet所以从父类的init方法进入:
    HttpServletBean->init->initServletBean->FrameworkServlet->initServletBean-> initWebApplicationContext->configureAndRefreshWebApplicationContext(执行spring容器刷新)


    ---- 到现在为止web中的监听器和DispatcherServlet全都可以加载了

    二、mvc配置说明 - 注解配置通过钩子函数调用加载的,方法的registry就是框架内部已经实例化的
    @EnableWebMvc - >DelegatingWebMvcConfiguration - >setConfigurers(WebMvcConfigurer接口的实现类注入进来)-> 父类WebMvcConfigurationSupport中所有的@bean注解方法->加载所有需要的类信息(handle)
    @EnableWebMvc注解加载的handler赋值给DispatcherServlet?FrameworkServlet.ContextRefreshListener(初始化完成默认进来)->onApplicationEvent->onRefresh->initStrategies()赋值完成

    三、映射关系的建立
    handleMapping启动的时候会加载->AbstractHandlerMethodMapping->afterPropertiesSet->processCandidateBean()->detectHandlerMethods(url和方法映射)->

    本文版权归原作者所有,不可商用,转载需要声明出处,否则保留追究法律责任的权利。如果文中有什么错误,欢迎指出。以免更多的人被误导。

  • 相关阅读:
    JQuery第一部分
    linq高级查与分页
    怎么修改数据库信息例子
    怎样连接客户端和操作数据库
    php数组的合并与方法
    php函数与数组
    php变量类型,运算符与表达式
    php正则表达式
    数组和字符串的几种常见替代方法
    php变量,类型和表达式
  • 原文地址:https://www.cnblogs.com/lean-blog/p/13154250.html
Copyright © 2011-2022 走看看