《看透SpringMVC》第十二章 HandlerMapping
2019独角兽企业重金招聘Python工程师标准>>>
12 HandlerMapping
12.1 AbstractHandlerMapping
- 保存所有interceptor
- 为hanlder添加interceptor
12.2 AbstractUrlHanlderMapping
gethandlerInternal()
通过url找hanlder
lookeupHandler()
获取直接映射的(this.handlerMap.get(url))
添加拦截器 PathExposingHandlerInterceptor
request添加 BEST_MATCHING_PATTERN_ATTRIBUTE
request添加 PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
request添加 INTROSPECT_TYPE_LEVEL_MAPPING(什么东西)
处理带模式匹配的
- 获取匹配的matchingPatterns
- patherns排序
- 多个bestMatch,从中提取url模版变量(应用中什么设置模版变量?)
- 添加拦截器
- PathExposingHandlerInterceptor (同上)
- UriTemplateVariablesHandlerInterceptor
registerHandler()
<urlpath, resolvedHanlder>
保存到 this.handlerMap (linkedHashmap)
SimpleUrlHandlerMapping
- 定义一个urlMap方便配置
- 自定义的register方法,被initApplicationContext() (WebApplicationObjectSupport方法)调用。
AbstractDetectingUrlHandlerMapping
- detectHandlersInAncestorContexts 是否从父容器的bean中查找handler
BeanNameUrlHandlerMapping
- 如果某个bean的名字以“/”开头则,以他为url。
12.3 AbstractHandlerMethodMapping
三个Map
- handlerMethods pattern->handlerMethod
- urlMap url->pattern 返回多个pattern,选最优的 (MultiValueMap)
- nameMap 默认类名里的大写字母组合 + "#" + 方法名 (一般不用), MvcUriComponentsBuilder 根据name获取对应的url
- 使用RequestMappingInfoHandlerMethodMappingNamingStrategy 从handlerMethod中解析出name。
RequestMappingInfo
七种RequestCondition
initHandlerMethods()
- 由InitializingBean接口的afterPropertiesSet() 方法调用
- isHandler() || 判断handler@Controller 或 @RequestMapping
- detectHandlerMethods()
- getMappingForMethod(method, userType) || 找到符合handler的methods
- registerHandlerMethod() || 注册handlerMapping(三个map)
- MappingRegistry 用于注册
- 使用ReentrantReadWriteLock (初始化有必要?)
- MappingRegistry 用于注册
getHandlerInternal()
- 根据request -> lookupPath
- lookupPath & Request -> HandlerMethod
- 如果找到HandlerMethod,返回handlerMethod.createWithResolvedBean() new一个新的实例返回。
转载于:https://my.oschina.net/u/1245414/blog/1580664
《看透SpringMVC》第十二章 HandlerMapping相关推荐
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- Shiro第十二章-与Spring集成、配置文件初解
简介 Shiro的组件都是Javabean/pojo式的组件,所以非常容易使用Spring进行组件管理,可以非常方便得从ini配置转为Spring配置(如xml配置文件). JavaSE 依赖 < ...
- stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验
1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第二十二章 待机唤醒实 ...
- 构建之法第十,十一,十二章阅读
第十章经典用户和场景 虽说经典场景和经典用户很有必要去研究去效仿,但是随着时间发展,新的用户新的需求不断涌现,那该怎么平衡? 第十一章软件设计与实现 软件设计过程中,如何管理设计变更呢? 第十二章用户 ...
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...
- stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...
1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...
- 系统架构师学习笔记_第十二章_连载
第十二章 系统安全架构设计 12.1 信息系统安全架构的简单描述 信息安全的特征 是为了保证信息的 机密性.完整性.可用性.可控性.不可抵赖性. 以风险策略为基础. 12.1.1 信息安全的现状 ...
- 《c++ templates》学习笔记(9)——第十二章 特化与重载
1 第十二章 特化与重载 1.1 重载函数模板 和一般的函数重载类似,函数模板也可以进行重载,比如下面的两个f,这是两个同名函数,1和2并没有关系,2不是1的局部特化.2是1的一个重 ...
- 开发日记-20190915 关键词 汇编语言王爽版 第十二章
第十二章 内中断 任何一个通用的CPU,比如8086,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部传送过来或内部产生的一种特殊信息,并且可以立即对所接收的信息进行处理.这种特 ...
最新文章
- java字符串去重复_Java 8新特性:字符串去重
- python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...
- javaSE基础04
- 想转行到机器学习,学到什么程度,才能找到工作?
- Codeforces 989C (构造)
- 968. Binary Tree Cameras 监控二叉树
- 第二十七期:德国工业4.0眼里“工业互联网”与“智能制造”
- 群晖218 修改服务器名称,一次换群晖引发的各种事情——论如何榨干218+的价值【不完全版】...
- click Documenting Scripts
- 工作两年和研究生两年(专业硕士)有什么差异?
- 【基于机器视觉与深度学习的人机对弈机器人——决策篇】
- Win7删除GRUB For DOS启动项
- 树莓派4B安装windows xp windows 95( windows xp windows 95 for raspberry pi 4B)
- 实践系列:分销平台的技术架构
- ES6 filter 过滤数组 | 图片onload同步等待获取图片宽高
- Stm32中英文手册官网免费
- 涉密台式计算机密码可以输入几次,涉密打印机、扫描仪等与涉密计算机之间不采用无线方式连接 - 作业在线问答...
- 机敏问答[复变][5] #20210629
- ansys workbench中fluent划分网格出现如下错误:The mesh file exporter failed during translation.
- (转)Unity3D手游开发实践
热门文章
- 从“小”培养AI安全意识:OpenAI开源具有安全约束的RL训练工具
- 科学家王海峰:从百度十篇论文入选ACL 2019说起
- 初步建立了完整AI产业链,我国AI域累计融资世界第一
- 盘点丨MIT教授Poggio:过去23年,机器学习取得了哪些进步
- linux的变量用法
- Centos7:update-initramfs -u:command not found
- 支持向量机(support vector machine)(SVM)(1)
- 从1G到5G,从回顾过去到展望未来
- 计算机密码行业专题研究:网络安全最大弹性领域
- 阿里120页PPT诠释国家“智能+”战略