Package org.springframework.web.method
Class HandlerMethod
- java.lang.Object
- org.springframework.web.method.HandlerMethod
- Direct Known Subclasses:
InvocableHandlerMethod
public class HandlerMethod extends Object
Encapsulates information about a handler method consisting of a method and a bean. Provides convenient access to method parameters, the method return value, method annotations, etc.The class may be created with a bean instance or with a bean name (e.g. lazy-init bean, prototype bean). Use
createWithResolvedBean()
to obtain aHandlerMethod
instance with a bean instance resolved through the associatedBeanFactory
.- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sam Brannen
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
HandlerMethod.HandlerMethodParameter
A MethodParameter with HandlerMethod-specific behavior.
Constructor Summary
Constructors Modifier Constructor Description HandlerMethod(Object bean, Method method)
Create an instance from a bean instance and a method.HandlerMethod(Object bean, String methodName, Class<?>... parameterTypes)
Create an instance from a bean instance, method name, and parameter types.HandlerMethod(String beanName, BeanFactory beanFactory, Method method)
Create an instance from a bean name, a method, and aBeanFactory
.protected
HandlerMethod(HandlerMethod handlerMethod)
Copy constructor for use in subclasses.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description HandlerMethod
createWithResolvedBean()
If the provided instance contains a bean name rather than an object instance, the bean name is resolved before aHandlerMethod
is created and returned.boolean
equals(Object other)
Object
getBean()
Return the bean for this handler method.Class<?>
getBeanType()
This method returns the type of the handler for this handler method.protected Method
getBridgedMethod()
If the bean method is a bridge method, this method returns the bridged (user-defined) method.Method
getMethod()
Return the method for this handler method.<A extends Annotation>
AgetMethodAnnotation(Class<A> annotationType)
Return a single annotation on the underlying method traversing its super methods if no annotation can be found on the given method itself.MethodParameter[]
getMethodParameters()
Return the method parameters for this handler method.HandlerMethod
getResolvedFromHandlerMethod()
Return the HandlerMethod from which this HandlerMethod instance was resolved viacreateWithResolvedBean()
.protected HttpStatus
getResponseStatus()
Return the specified response status, if any.protected String
getResponseStatusReason()
Return the associated response status reason, if any.MethodParameter
getReturnType()
Return the HandlerMethod return type.MethodParameter
getReturnValueType(Object returnValue)
Return the actual return value type.String
getShortLogMessage()
Return a short representation of this handler method for log message purposes.int
hashCode()
<A extends Annotation>
booleanhasMethodAnnotation(Class<A> annotationType)
Return whether the parameter is declared with the given annotation type.boolean
isVoid()
Returntrue
if the method return type is void,false
otherwise.String
toString()
Constructor Detail
HandlerMethod
public HandlerMethod(Object bean, Method method)
Create an instance from a bean instance and a method.
HandlerMethod
public HandlerMethod(Object bean, String methodName, Class<?>... parameterTypes) throws NoSuchMethodException
Create an instance from a bean instance, method name, and parameter types.- Throws:
NoSuchMethodException
- when the method cannot be found
HandlerMethod
public HandlerMethod(String beanName, BeanFactory beanFactory, Method method)
Create an instance from a bean name, a method, and aBeanFactory
. The methodcreateWithResolvedBean()
may be used later to re-create theHandlerMethod
with an initialized bean.
HandlerMethod
protected HandlerMethod(HandlerMethod handlerMethod)
Copy constructor for use in subclasses.
Method Detail
getBeanType
public Class<?> getBeanType()
This method returns the type of the handler for this handler method.Note that if the bean type is a CGLIB-generated class, the original user-defined class is returned.
getBridgedMethod
protected Method getBridgedMethod()
If the bean method is a bridge method, this method returns the bridged (user-defined) method. Otherwise it returns the same method asgetMethod()
.
getMethodParameters
public MethodParameter[] getMethodParameters()
Return the method parameters for this handler method.
getResponseStatus
protected HttpStatus getResponseStatus()
Return the specified response status, if any.- Since:
- 4.3.8
- See Also:
ResponseStatus.code()
getResponseStatusReason
protected String getResponseStatusReason()
Return the associated response status reason, if any.- Since:
- 4.3.8
- See Also:
ResponseStatus.reason()
getReturnType
public MethodParameter getReturnType()
Return the HandlerMethod return type.
getReturnValueType
public MethodParameter getReturnValueType(Object returnValue)
Return the actual return value type.
isVoid
public boolean isVoid()
Returntrue
if the method return type is void,false
otherwise.
getMethodAnnotation
public <A extends Annotation> A getMethodAnnotation(Class<A> annotationType)
Return a single annotation on the underlying method traversing its super methods if no annotation can be found on the given method itself.Also supports merged composed annotations with attribute overrides as of Spring Framework 4.2.2.
- Parameters:
annotationType
- the type of annotation to introspect the method for- Returns:
- the annotation, or
null
if none found - See Also:
AnnotatedElementUtils.findMergedAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<A>)
hasMethodAnnotation
public <A extends Annotation> boolean hasMethodAnnotation(Class<A> annotationType)
Return whether the parameter is declared with the given annotation type.- Parameters:
annotationType
- the annotation type to look for- Since:
- 4.3
- See Also:
AnnotatedElementUtils.hasAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>)
getResolvedFromHandlerMethod
public HandlerMethod getResolvedFromHandlerMethod()
Return the HandlerMethod from which this HandlerMethod instance was resolved viacreateWithResolvedBean()
.
createWithResolvedBean
public HandlerMethod createWithResolvedBean()
If the provided instance contains a bean name rather than an object instance, the bean name is resolved before aHandlerMethod
is created and returned.
getShortLogMessage
public String getShortLogMessage()
Return a short representation of this handler method for log message purposes.- Since:
- 4.3