个人博客:进入博客,关注下博主,感谢~
所有博客均在上面博客首发,其他平台同步更新
大家一起进步,多多指教~
有时是否有些疑问,mvc controller是怎么实现的,或者说有没有需求让你将所有api收集起来,有点像api文档那种?
一般的思路
controller实现方案会有map,来保存url,以及对应调用类、方法、参数。
然后api收集的话,会考虑通过反射,收集对应的注解来拿到这些controller的信息
实际上
controller实现方案也是这么实现的
api信息收集的话mvc已经帮我们实现了,接下来的重点看下spring mvc是怎么实现controller
RequestMappingHandlerMapping
它继承 AbstractHandlerMethodMapping
AbstractHandlerMethodMapping里头有什么?
private final MappingRegistry mappingRegistry
那我们来获取一下,看下药里面塞的是什么葫芦
再进去,一个循环里头,会有对应的url、bean、方法名,returnType,参数类型等等
那么我们可以知道AbstractHandlerMethodMapping mappingRegistry 有mvc所有请求路径信息!
上面是直接说结果了,所以下面按顺序来梳理下实现原理
AbstractHandlerMethodMapping 实现了 InitializingBean,调用initHandlerMethods方法
最后往AbstractHandlerMethodMapping registry塞数据,其实也就是我们之前说的结果
可以参考