栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring mvc controller实现原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring mvc controller实现原理

文章目录

前言controller实现原理

按顺序讲解实现原理 你想往mvc添加自己的实现注解controller

前言

有时是否有些疑问,mvc controller是怎么实现的,或者说有没有需求让你将所有api收集起来,有点像api文档那种?

一般的思路
controller实现方案会有map,来保存url,以及对应调用类、方法、参数。
然后api收集的话,会考虑通过反射,收集对应的注解来拿到这些controller的信息

实际上
controller实现方案也是这么实现的
api信息收集的话mvc已经帮我们实现了,接下来的重点看下spring mvc是怎么实现controller

controller


上面就是我们平时会用到普遍的用法,有post、get请求

实现原理

RequestMappingHandlerMapping
它继承 AbstractHandlerMethodMapping

AbstractHandlerMethodMapping里头有什么?
private final MappingRegistry mappingRegistry
那我们来获取一下,看下药里面塞的是什么葫芦


通过反射来获取实例里头的属性


mapperlookup里面有所有url


再进去,一个循环里头,会有对应的url、bean、方法名,returnType,参数类型等等

那么我们可以知道AbstractHandlerMethodMapping mappingRegistry 有mvc所有请求路径信息!

按顺序讲解实现原理

上面是直接说结果了,所以下面按顺序来梳理下实现原理

    AbstractHandlerMethodMapping 实现了 InitializingBean,调用initHandlerMethods方法

    它会遍历所有类

    isHandler方法会去判断是否符合条件,符合的话会处理。有没有很熟悉的注解

    如果有这样的注解,会跳进detectHandlerMethods方法,会拿到对应方法以及mapping

    registerHandlerMethod方法

    最后往AbstractHandlerMethodMapping registry塞数据,其实也就是我们之前说的结果

你想往mvc添加自己的实现注解controller
    改下AbstractHandlerMethodMapping isHandler方法改下构造请求info的方法getMappingForMethod

可以参考

动态生成简约MVC请求接口

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号