public class HandlerMethod
extends java.lang.Object
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 a HandlerMethod
instance with a bean instance resolved
through the associated BeanFactory
.
Modifier and Type | Class and Description |
---|---|
protected class |
HandlerMethod.HandlerMethodParameter
A MethodParameter with HandlerMethod-specific behavior.
|
private class |
HandlerMethod.ReturnValueMethodParameter
A MethodParameter for a HandlerMethod return type based on an actual return value.
|
Modifier and Type | Field and Description |
---|---|
private java.lang.Object |
bean |
private BeanFactory |
beanFactory |
private java.lang.Class<?> |
beanType |
private java.lang.reflect.Method |
bridgedMethod |
static Log |
defaultLogger
Public for wrapping with fallback logger.
|
protected Log |
logger |
private java.lang.reflect.Method |
method |
private MethodParameter[] |
parameters |
private HandlerMethod |
resolvedFromHandlerMethod |
Modifier | Constructor and Description |
---|---|
protected |
HandlerMethod(HandlerMethod handlerMethod)
Copy constructor for use in subclasses.
|
private |
HandlerMethod(HandlerMethod handlerMethod,
java.lang.Object handler)
Re-create HandlerMethod with the resolved handler.
|
|
HandlerMethod(java.lang.Object bean,
java.lang.reflect.Method method)
Create an instance from a bean instance and a method.
|
|
HandlerMethod(java.lang.Object bean,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
Create an instance from a bean instance, method name, and parameter types.
|
|
HandlerMethod(java.lang.String beanName,
BeanFactory beanFactory,
java.lang.reflect.Method method)
Create an instance from a bean name, a method, and a
BeanFactory . |
Modifier and Type | Method and Description |
---|---|
protected void |
assertTargetBean(java.lang.reflect.Method method,
java.lang.Object targetBean,
java.lang.Object[] args)
Assert that the target bean class is an instance of the class where the given
method is declared.
|
HandlerMethod |
createWithResolvedBean()
If the provided instance contains a bean name rather than an object instance,
the bean name is resolved before a
HandlerMethod is created and returned. |
boolean |
equals(java.lang.Object other) |
protected static java.lang.Object |
findProvidedArgument(MethodParameter parameter,
java.lang.Object... providedArgs) |
protected static java.lang.String |
formatArgumentError(MethodParameter param,
java.lang.String message) |
protected java.lang.String |
formatInvokeError(java.lang.String text,
java.lang.Object[] args) |
java.lang.Object |
getBean()
Return the bean for this handler method.
|
java.lang.Class<?> |
getBeanType()
This method returns the type of the handler for this handler method.
|
protected java.lang.reflect.Method |
getBridgedMethod()
If the bean method is a bridge method, this method returns the bridged
(user-defined) method.
|
Log |
getLogger()
Return the currently configured Logger.
|
java.lang.reflect.Method |
getMethod()
Return the method for this handler method.
|
<A extends java.lang.annotation.Annotation> |
getMethodAnnotation(java.lang.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 via
createWithResolvedBean() . |
MethodParameter |
getReturnType()
Return the HandlerMethod return type.
|
MethodParameter |
getReturnValueType(java.lang.Object returnValue)
Return the actual return value type.
|
java.lang.String |
getShortLogMessage()
Return a short representation of this handler method for log message purposes.
|
int |
hashCode() |
<A extends java.lang.annotation.Annotation> |
hasMethodAnnotation(java.lang.Class<A> annotationType)
Return whether the parameter is declared with the given annotation type.
|
private MethodParameter[] |
initMethodParameters() |
boolean |
isVoid()
Return
true if the method return type is void, false otherwise. |
void |
setLogger(Log logger)
Set an alternative logger to use than the one based on the class name.
|
java.lang.String |
toString() |
public static final Log defaultLogger
protected Log logger
private final java.lang.Object bean
@Nullable private final BeanFactory beanFactory
private final java.lang.Class<?> beanType
private final java.lang.reflect.Method method
private final java.lang.reflect.Method bridgedMethod
private final MethodParameter[] parameters
@Nullable private HandlerMethod resolvedFromHandlerMethod
public HandlerMethod(java.lang.Object bean, java.lang.reflect.Method method)
public HandlerMethod(java.lang.Object bean, java.lang.String methodName, java.lang.Class<?>... parameterTypes) throws java.lang.NoSuchMethodException
java.lang.NoSuchMethodException
- when the method cannot be foundpublic HandlerMethod(java.lang.String beanName, BeanFactory beanFactory, java.lang.reflect.Method method)
BeanFactory
.
The method createWithResolvedBean()
may be used later to
re-create the HandlerMethod
with an initialized bean.protected HandlerMethod(HandlerMethod handlerMethod)
private HandlerMethod(HandlerMethod handlerMethod, java.lang.Object handler)
private MethodParameter[] initMethodParameters()
public void setLogger(Log logger)
logger
- the logger to usepublic Log getLogger()
public java.lang.Object getBean()
public java.lang.reflect.Method getMethod()
public java.lang.Class<?> getBeanType()
Note that if the bean type is a CGLIB-generated class, the original user-defined class is returned.
protected java.lang.reflect.Method getBridgedMethod()
getMethod()
.public MethodParameter[] getMethodParameters()
public MethodParameter getReturnType()
public MethodParameter getReturnValueType(@Nullable java.lang.Object returnValue)
public boolean isVoid()
true
if the method return type is void, false
otherwise.@Nullable public <A extends java.lang.annotation.Annotation> A getMethodAnnotation(java.lang.Class<A> annotationType)
Also supports merged composed annotations with attribute overrides as of Spring Framework 4.3.
annotationType
- the type of annotation to introspect the method fornull
if none foundAnnotatedElementUtils.findMergedAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<A>)
public <A extends java.lang.annotation.Annotation> boolean hasMethodAnnotation(java.lang.Class<A> annotationType)
annotationType
- the annotation type to look forAnnotatedElementUtils.hasAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>)
@Nullable public HandlerMethod getResolvedFromHandlerMethod()
createWithResolvedBean()
.public HandlerMethod createWithResolvedBean()
HandlerMethod
is created and returned.public java.lang.String getShortLogMessage()
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
@Nullable protected static java.lang.Object findProvidedArgument(MethodParameter parameter, @Nullable java.lang.Object... providedArgs)
protected static java.lang.String formatArgumentError(MethodParameter param, java.lang.String message)
protected void assertTargetBean(java.lang.reflect.Method method, java.lang.Object targetBean, java.lang.Object[] args)
protected java.lang.String formatInvokeError(java.lang.String text, java.lang.Object[] args)