08.SpringMVC 处理器 - HandlerMethod
2017-03-02 09:17
218 查看
基本概念
我们知道在 SpringMVC 中 控制器(Controller)负责对请求路径进行匹配并调用相应地执行方法。而 HandlerMethod 就表示这个方法, 但它一般也被称作处理器,即 handler。因为它身上包含了控制器信息、控制器的指定方法信息。
内部构造
下面来看它的构造函数,需要关注的是它的几个成员变量:public HandlerMethod(Object bean, Method method) { // 省略部分代码... // 控制器名称 this.bean = bean; // 所在容器,这里指 SpringMVC 容器 this.beanFactory = null; // 控制器类型 this.beanType = ClassUtils.getUserClass(bean); // 路径匹配的执行方法 this.method = method; // 方法参数 this.parameters = initMethodParameters(); // 桥方法,一般情况与 method 值一样 this.bridgedMethod = BridgeMethodResolver.findBridgedMethod(method); this.resolvedFromHandlerMethod = null; }
实例探究
假设 HandlerMethod 表示 test 方法:Controller public class LoginController { @RequestMapping(value = "/login") public Object test(HttpServletRequest request, Model model) throws Exception { return null; } }
则它的成员变量对应如下:
bean= LoginController beanType= Class<T> (com.apps.modules.login.controller.LoginController) method= public java.lang.Object com.apps.modules.login.controller.LoginController.test (javax.servlet.http.HttpServletRequest,org.springframework.ui.Model) throws java.lang.Exception parameters= [org.springframework.web.method.HandlerMethod$HandlerMethodParameter@c9d41104, org.springframework.web.method.HandlerMethod$HandlerMethodParameter@c9d41105]
取得控制器
并且在 HandlerMethod 中可以通过成员变量 bean,也就是控制器名称,获取指定的控制器。下面来看它的 createWithResolvedBean 方法。public HandlerMethod createWithResolvedBean() { Object handler = this.bean; if (this.bean instanceof String) { String beanName = (String) this.bean; handler = this.beanFactory.getBean(beanName); } return new HandlerMethod(this, handler); }
相关文章推荐
- 第五章 处理器拦截器详解——跟着开涛学SpringMVC
- 第六章 :注解式控制器运行流程及处理器定义 ——跟着开涛学SpringMVC
- SpringMVC提高篇(二): 处理器方法支持的方法参数和返回类型
- SpringMVC(九)----异常处理器
- SpringMVC自定义处理器里的那些事
- 以SpringMVC框架为中心疯狂扩展-08、ActiveMQ收发Json格式的数据
- SpringMVC几种处理器映射介绍
- springmvc中常见的非注解开发的处理器映射器
- springmvc注解的处理器映射器和适配器
- 处理器拦截器详解—SpringMVC
- 注解式控制器运行流程及处理器定义 第六章 注解式控制器详解——跟着开涛学SpringMVC
- SpringMVC之处理器映射
- springMVC+Mybatis 学习笔记-【3】Mybatis【批量别名定义】和【类型处理器】
- 非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)
- springMVC源码分析--AbstractHandlerMethodMapping获取url和HandlerMethod对应关系(十)
- springmvc(五)---全局异常处理器
- SpringMVC-08 @InitBinder注解
- SpringMVC源码解析 - HandlerMethod
- 第五章 处理器拦截器详解——跟着开涛学SpringMVC