专题网站建设方案,时事新闻,网站备案是怎么回事,wordpress分类使用不同模板在spring mvc的RequestMappingHandlerMapping注册HandlerMethod源码分析这篇文章中简单分析了HandlerMethod注册,那这次就介绍HandlerMethod这个类。 HandlerMethod封装了很多属性,在访问请求方法的时候可以方便的访问到方法、方法参数、方法上的注解、所…
在spring mvc的RequestMappingHandlerMapping注册HandlerMethod源码分析这篇文章中简单分析了HandlerMethod注册,那这次就介绍HandlerMethod这个类。
HandlerMethod封装了很多属性,在访问请求方法的时候可以方便的访问到方法、方法参数、方法上的注解、所属类等并且对方法参数封装处理,也可以方便的访问到方法参数的注解等信息。
下面,是HandlerMethodn属性字段的源码,每个属性上加了注释说明:
public class HandlerMethod {// 虽然Object类型,但是注册handlerMethod时候构造的时候有可能传入的是一个String类型的bean nameprivate final Object bean;// 见名知义,我调试的时候,传入的是DefaultListableBeanFactory,如果bean属性是Sring的beanName就可以用beanName获取到对应的bean作用Handlerprivate final BeanFactory beanFactory;// 方法所属类private final Class<?> beanType;// 注册的方法private final Method method;// 被桥接的方法,如果method是原生的,这个属性的值就是methodprivate final Method bridgedMethod;// 封装方法参数的类实例,一个MethodParameter就是一个参数private final MethodParameter[] parameters;// Http状态码private HttpStatus responseStatus;// ResponseStatus注解的reason值private String responseStatusReason;private HandlerMethod resolvedFromHandlerMethod;//...
}
顺便提下:
HandlerMethod还有两个子类,分别为InvocableHandlerMethod和ServletInvocableHandlerMethod,他们的继承关系如下:
InvocableHandlerMethod是在HandlerMethod上增加了调用的功能,而ServletInvocableHandlerMethod是在InvocableHandlerMethod增加了返回值和响应状态码的处理,另外在ServletInvocableHandlerMethod有个内部类ConcurrentResultHandlerMethod继承于它,支持异常调用结果处理。在查找到Handler适配器时候发起对方法调用的便是用ServletInvocableHandlerMethod。