ToB企服应用市场:ToB评测及商务社交产业平台
标题:
几句话分析org.springframework.web.servlet.HandlerMapping体系机构
[打印本页]
作者:
科技颠覆者
时间:
2025-1-12 20:53
标题:
几句话分析org.springframework.web.servlet.HandlerMapping体系机构
简介
映射器的作用就是解析出来url和handler的关系,并且保存这样的关系,在每次请求到来时,查找这个handler。handler并未有明确的要求,但是从spring原本实现上看,handler主要有对象级别和方法级别两种.
复制代码
{@link HandlerMapping}为高级接口界说,所有的HandlerMapping都是基于它实现的。但是它仅仅只是界说了,怎样通过Request查找对应的HandlerExecutionChain对象,并未界说怎样注册url和handler的关系。
{@link HandlerMapping}
有两个实现类,分别是从对象级别以及方法级别上查找url和handler的映射关系,这两个实现类分别是:
AbstractUrlHandlerMapping:从对象级别界说url和handler的映射关系,它的内部是通过一个map来维护这个关系的。
AbstractHandlerMethodMapping:从方法级别定义url和handler的映射关系,它的内部是通过一个注册中心来维护这个关系的,即{@link AbstractHandlerMethodMapping.MappingRegistry},并且它支持的是{@link org.springframework.web.bind.annotation.RequestMapping}的注解
复制代码
AbstractUrlHandlerMapping
它处理的handler是一个bean,但这个bean又分为实现了特定接口的bean和不指定特定实现的bean
复制代码
自己指定url和handler关系映射的,即通过prop指定,其为{@link SimpleUrlHandlerMapping}
复制代码
通过bean本身去解析bean的url和handler关系的,即{@link AbstractDetectingUrlHandlerMapping}
复制代码
AbstractDetectingUrlHandlerMapping
对于通过bean本身去解析bean的url和handler关系的类,该类有分为两种:
第一种是通过bean的名称去解析,而bean的名称就是我们界说bean的时候制定的。即
{@link BeanNameUrlHandlerMapping}
复制代码
第二种则是通过实现了特定接口或者注解的bean去解析的bean,即
{@link AbstractControllerUrlHandlerMapping}
复制代码
AbstractControllerUrlHandlerMapping
该类通过,查找固定实现了{@link Controller}接口或者 {@link org.springframework.stereotype.Controller} 的bean来实现bena的关系映射,他又进一步分为三种查找关系
复制代码
bean的name是一个url结构的。对应的实现类为{@link ControllerBeanNameHandlerMapping},它与BeanNameUrlHandlerMapping的区别是,他必须实现实现了{@link Controller}接口或者 {@link org.springframework.stereotype.Controller},并且他还支持前缀、后缀适配、过滤适配等。
复制代码
bean的包路径形成url结构的,对应的实现类为{@link ControllerClassNameHandlerMapping},它的作用,就是讲bean所在的包当做url的一部分,进行url匹配。
复制代码
bean上注解了{@link org.springframework.web.bind.annotation.RequestMapping}的,目前该方法即将淘汰,使用AbstractHandlerMethodMapping的进行替换和支持。这个方法与AbstractHandlerMethodMapping的区别之处在于,他解析结果是对象级别的,比如你一个bean中注解了多个requestmapping,它的内部存的是一个requestmapping的url与这个bean的映射关系,而AbstractHandlerMethodMapping则是存了一个requestmapping与这个方法级别的映射关系
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4