首页 › 程序设计 › java

Spring MVC 学习笔记 三 handlerMapping和handlerAdapter

泡在网上的日子 / 文 发表于2012-04-06 13:49 次阅读 spring

Spring MVC 学习笔记 三 handlerMapping和handlerAdapter: 

HandlerMapping
Spring mvc 使用HandlerMapping来找到并保存url请求和处理函数间的mapping关系。

以DefaultAnnotationHandlerMapping为例来具体看HandlerMapping的作用
Spring MVC 学习笔记 三 handlerMapping和handlerAdapter: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

		<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。亦可通过

 

		<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。

 

收藏 赞 (0) 踩 (0)
上一篇:SpringMVC中的概念性问题
这是一个SpringMVC的学习笔记 基本上是一个精简版的SpringMVC参考,很简单,因为大部分的web框架的概念都是通用的。 而本文更关心的是SpringMVC中的概念性问题,至于细节,不在本学习笔记之内。 该文档基于Spring2.5.2 概述 Spring的web框架围绕DispatcherSer
下一篇:Android进程与线程基本知识
本文介绍Android平台中进程与线程的基本知识。 很早的时候就想介绍一下Android中的进程和线程,但由于其他的事情一直给耽搁了,直到现在才能和大家一起分享下。 1.Android进程基本知识: 我们先来了解下Android中的进程基本知识。 当一个程序第一次启动的时