zoukankan      html  css  js  c++  java
  • SpringMVC源码(未完工)

    1、RequestMappingHandlerMapping实现了InitializingBean接口,会在实例化之后,调用(父类的)initHandlerMethods方法,遍历beanname,看看是不是handler,把handler中的每一个method都装配成一个HandlerMethod,放到mappingRegistry中。

    2、DispatchSevlet的doDispatch会调用RequestMappingHandlerAdaptor的handle方法,内部逻辑就是把上面mappingRegistry中的HandlerMethod取出来,解析方法参数,执行,再处理返回结果。RequestMappingHandlerAdaptor之所以叫adaptor,其实就是适配RequestMappingHandlerMapping,单独的RequestMappingHandlerMapping只能执行方法。刚才说的参数解析处理返回结果这些附属方法,要在RequestMappingHandlerAdaptor中做,RequestMappingHandlerAdaptor中有argumentResolvers、returnValueHandlers、parameterNameDiscoverer 这些属性。【parameterNameDiscoverer之所以能读取方法参数名,是因为class文件的方法表中,指向的属性表里面的localVariableTable保存了参数名的信息】

    3、springmvc拦截器的原理:在WebMvcAutoConfiguration中,会将RequestMappingHandlerMapping注册,在注册过程中,父类WebMvcConfigurationSupport的258行,new一个registry,把spring工厂中所有WebMvcConfigurer类型的addInterceptors都调用一下(registry是方法的参数),把所有拦截器都收集到registry中,赋值给RequestMappingHandlerMapping的属性。

    4、MessageConverters,用的是WebMvcConfigurer接口的是WebMvcAutoConfiguration的另一个内部类WebMvcAutoConfigurationAdapter,里面涉及到cglib动态代理。

  • 相关阅读:
    Docker--使用
    腾讯云发送短信
    Mysql--查询基础
    flask10--数据库链接池(通用),wtforms
    Flask11--Flask-script,sqlalchemy
    序列化 json
    第五章-算术运算符
    计算机网络自顶向下的方法-第二章 应用层
    第三章-数据类型
    第三章-常量和宏定义
  • 原文地址:https://www.cnblogs.com/chuliang/p/9724513.html
Copyright © 2011-2022 走看看