首页 > 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代码  收藏代码
  1. <init-param>  
  2.     <param-name>detectAllHandlerMappingsparam-name>  
  3.     <param-value>falseparam-value>  
  4. 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代码  收藏代码
  1. <init-param>  
  2.     <param-name>detectAllHandlerAdaptersparam-name>  
  3.     <param-value>falseparam-value>  
  4. init-param>  



来强制系统只加载bean name 为” handlerAdapter”handlerAdapter。加载不到的情况下将按照DispatcherServlet.properties中所定义的org.springframework.web.servlet.HandlerAdapter的内容来加载缺省的handlerAdapter。 

转载于:https://www.cnblogs.com/luoluoshidafu/p/6854333.html

更多相关:

  • 这个是cdn配置缓存策略的文件,可以改变指定对象或是对象集的缓存参数cacheing paremeters 该文件默认存放在/usr/local/etc/trafficserver/,它定义了Traffic Server如何缓存web objects。 你能添加caching rules来指定如下东西: 不缓存来自某个IP add...

  • 文章目录基本概念普通的分位数计算Rocksdb中的应用rocksdb中的分桶算法结果展示rocksdb 分桶算法实现一些总结 和 相关论文...

  • 罗德里希·普塔克 — 德国汉学家 海上丝路连结了古代世界贸易往来,见证了中华文明在人类历史中的枢纽位置。 王权集中的朝代中每一个流传后世的国家层级的决策无不彰显国家机器得强壮,但同样也很脆弱,决策者不可能时刻都能做出最为正确得选择。...

  • 原文:http://www.2008sc.cn/blog/article.asp?id=82 1、JavaScript 中的内存泄露模式http://www.ibm.com/developerworks/cn/web/wa-memleak/index.html----------------------2、javascript中的 闭...

  • 编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了。 Spring系列产品大量运用在网站开发中,而Spring Boot是为了简化配置而出现的,理论上讲Spring Boot应该默认配置UTF-8为默认编码,但是...

  • 1、报错(部分)       2、解决 虽然Spring的jdk要求如下,但是spring 3与jdk1.8不兼容(使用的是spring 3.2)       在eclipse将jdk版本下调。这里将JDK调到1.7(在eclipse如下设置)       同时,需要设置服务器Tomcat的运行环境,同样改为1.7       转...

  • Traveller,翻译为旅行家,是我用来实践最佳web技术的项目,主题是一个给旅行爱好者提供旅行信息的网站。 目标是组合现最流行的web技术,实现符合中国用户使用习惯的网站。 相关网址 Git:https://github.com/mingziday/Traveller_Spring-Data-Rest_AngularjsBlog:...