【Spring MVC 学习笔记 handlerMapping和handlerAdapter】著论准过秦,作赋拟子虚。这篇文章主要讲述Spring MVC 学习笔记 handlerMapping和handlerAdapter相关的知识,希望能为你提供帮助。
HandlerMapping
Spring mvc 使用HandlerMapping来找到并保存url请求和处理函数间的mapping关系。
以DefaultAnnotationHandlerMapping为例来具体看HandlerMapping的作用
DefaultAnnotationHandlerMapping将扫描当前所有已经注册的spring beans中的@requestmapping标注以找出url 和 handler method处理函数的关系并予以关联。
Handleradapter
Spring MVC通过HandlerAdapter来实际调用处理函数。
以AnnotationMethodHandlerAdapter为例
DispatcherServlet中根据handlermapping找到对应的handler method后,首先检查当前工程中注册的所有可用的handlerAdapter,根据handlerAdapter中的supports方法找到可以使用的handlerAdapter。通过调用handlerAdapter中的handle方法来处理及准备handler method中的参数及annotation(这就是spring mvc如何将reqeust中的参数变成handle method中的输入参数的地方),最终调用实际的handle method。
detectAllHandlerMappings
缺省情况下spring mvc 将加载 当前系统中所有实现了HandlerMapping接口的bean。如果只期望spring mvc加载指定的handlermapping时,可以修改web.xml中的DispatcherServlet的初始参数,将detectAllHandlerMappings的值设置为false
Xml代码
文章图片
- < init-param>
- < param-name> detectAllHandlerMappings< /param-name>
- < param-value> false< /param-value>
- < /init-param>
此时spring mvc将查找名 为“handlerMapping”的bean并作为当前系统中唯一的handlermapping。
如果没有定义handlerMapping的话,则spring mvc将按照org.springframework.web.servlet.DispatcherServlet所在目录下的DispatcherServlet.properties中所定义的org.springframework.web.servlet.HandlerMapping的内容来加载缺省的handlerMapping(用户没有自定义Strategies的情况下)。
detectAllHandlerAdapters
作用和detectAllHandlerMappings类似,只不过作用对象为handlerAdapter。亦可通过
Xml代码
文章图片
- < init-param>
- < param-name> detectAllHandlerAdapters< /param-name>
- < param-value> false< /param-value>
- < /init-param>
来强制系统只加载bean name 为” handlerAdapter”handlerAdapter。加载不到的情况下将按照DispatcherServlet.properties中所定义的org.springframework.web.servlet.HandlerAdapter的内容来加载缺省的handlerAdapter。
推荐阅读
- Android内存解析—从Linux系统内存逐步认识Android应用内存
- 如何将Android Studio的项目上传到Github上
- 网页搜索之后的APP搜索
- Android实现App版本自动更新
- Android Studio 2.3.3 添加ksoap2的引用(拒绝网上其他的忽悠),也适用于添加其他Jar的引用
- Android 6.0 - 动态权限管理的解决方案(转)
- Android(图解四种启动模式 及 实际应用场景解说)
- Android 四大组件------Activity
- android之SlideMenu双向滑动