前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HandlerMapping

HandlerMapping

作者头像
用户2909867
发布2018-08-22 11:17:52
2210
发布2018-08-22 11:17:52
举报
文章被收录于专栏:互联网大杂烩

HandlerMapping家族成员分为两支,一支继承AbstractUrlHandlerMapping,另一支继承AbstractHandlerMethodMapping,而这两都继承自抽象类AbstractHandlerMapping.

AbstractHandlerMapping

HandlerMapping的作用是根据request查找Handler和Interceptors,获取Handler的过程通过模板方法getHandlerInternal交给子类。AbstractHandlerMapping中保存了所有配置的Interceptor,在获取到Handler后会根据从request提取lookpath将相应的Interceptors装配上去,当然子类也可以通过getHandlerInternal方法设置自己的Interceptor,gethandlerInternal的返回值类型为Object类型。 AbstractHandlerMapping继承了WebApplicationObjectSupport,初始化时会自动调用模板方法initApplicationContext,AbstractHandlerMapping的创建就是在initApplicationContext方法实现的。 1.extendInterceptor是模板方法,用于子类提供一个修改Interceptors的入口。 2.detectMappedInterceptors方法用于将Spring MVC容器及父容器中的所有MappedInterceptor类型的Bean添加到mappedInterceptors属性。 3.initInterceptors方法的作用是初始化Interceptor,将interceptors属性所包含的对象按类型添加到mappedInterceptors或者adaptedInterceptors. HandlerMapping是通过getHandler方法来获取处理器Handler和拦截器Interceptor的。 找到Handler的过程是这样的: 1.通过getHandlerInternal(request)方法获取,这个模板方法,留给子类具体实现。 2.如果没有获取到则使用默认的Handler,默认的Handler保存在AbstractHandlerMapping的一个Object类型的属性defaultHandler中,可以在配置HandlerMapping时进行配置,也可以在子类中进行设置。 3.如果找到的Handler是String类型,则以它为名到spring MVC的容器里查找相应的Bean.

AbstractUrlHandlerMapping

此系列的原理是将url与对应的Handler保存在一个Map中,在getHandlerInternal方法中使用url从Map中获取Handler,AbstractUrlHandlerMapping中实现具体用url从Map中获取Handler的过程,而Map的初始化则交给具体的子孙类去完成。这里的Map就是定义在AbstractUrlHandlerMapping中HashMap..

AbstractHandlerMethodMapping

将method作为Handler来使用的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AbstractHandlerMapping
  • AbstractUrlHandlerMapping
  • AbstractHandlerMethodMapping
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档