Class HandlerMethod

java.lang.Object
org.springframework.core.annotation.AnnotatedMethod
org.springframework.web.method.HandlerMethod
Direct Known Subclasses:
InvocableHandlerMethod

public class HandlerMethod extends org.springframework.core.annotation.AnnotatedMethod
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 a HandlerMethod instance with a bean instance resolved through the associated BeanFactory.

Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sam Brannen
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.springframework.core.annotation.AnnotatedMethod

    org.springframework.core.annotation.AnnotatedMethod.AnnotatedMethodParameter
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final org.apache.commons.logging.Log
    Logger that is available to subclasses.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
     
    HandlerMethod(Object bean, Method method)
    Create an instance from a bean instance and a method.
    protected
    HandlerMethod(Object bean, Method method, org.springframework.context.MessageSource messageSource)
    Variant of HandlerMethod(Object, Method) that also accepts a MessageSource for use from subclasses.
     
    HandlerMethod(Object bean, String methodName, Class<?>... parameterTypes)
    Create an instance from a bean instance, method name, and parameter types.
     
    HandlerMethod(String beanName, org.springframework.beans.factory.BeanFactory beanFactory, Method method)
    Create an instance from a bean name, a method, and a BeanFactory.
     
    HandlerMethod(String beanName, org.springframework.beans.factory.BeanFactory beanFactory, org.springframework.context.MessageSource messageSource, Method method)
    Variant of HandlerMethod(String, BeanFactory, Method) that also accepts a MessageSource.
    protected
    Copy constructor for use in subclasses.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    assertTargetBean(Method method, Object targetBean, Object[] args)
    Assert that the target bean class is an instance of the class where the given method is declared.
    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(Object other)
     
    protected String
     
    Return the bean for this handler method.
    This method returns the type of the handler for this handler method.
    protected Class<?>
     
    Return the HandlerMethod from which this HandlerMethod instance was resolved via createWithResolvedBean().
    protected HttpStatusCode
    Return the specified response status, if any.
    protected String
    Return the associated response status reason, if any.
    Return a short representation of this handler method for log message purposes.
    int
     
    boolean
    Whether the method arguments are a candidate for method validation, which is the case when there are parameter jakarta.validation.Constraint annotations.
    boolean
    Whether the method return value is a candidate for method validation, which is the case when there are method jakarta.validation.Constraint or jakarta.validation.Valid annotations.
     

    Methods inherited from class org.springframework.core.annotation.AnnotatedMethod

    findProvidedArgument, formatArgumentError, getBridgedMethod, getMethod, getMethodAnnotation, getMethodParameters, getReturnType, getReturnValueType, hasMethodAnnotation, isVoid

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • logger

      protected static final org.apache.commons.logging.Log logger
      Logger that is available to subclasses.
  • Constructor Details

    • HandlerMethod

      public HandlerMethod(Object bean, Method method)
      Create an instance from a bean instance and a method.
    • HandlerMethod

      protected HandlerMethod(Object bean, Method method, @Nullable org.springframework.context.MessageSource messageSource)
      Variant of HandlerMethod(Object, Method) that also accepts a MessageSource for use from subclasses.
      Since:
      5.3.10
    • 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, org.springframework.beans.factory.BeanFactory beanFactory, Method method)
      Create an instance from a bean name, a method, and a BeanFactory. The method createWithResolvedBean() may be used later to re-create the HandlerMethod with an initialized bean.
    • HandlerMethod

      public HandlerMethod(String beanName, org.springframework.beans.factory.BeanFactory beanFactory, @Nullable org.springframework.context.MessageSource messageSource, Method method)
      Variant of HandlerMethod(String, BeanFactory, Method) that also accepts a MessageSource.
    • HandlerMethod

      protected HandlerMethod(HandlerMethod handlerMethod)
      Copy constructor for use in subclasses.
  • Method Details

    • getBean

      public Object getBean()
      Return the bean for this handler method.
    • 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.

    • getContainingClass

      protected Class<?> getContainingClass()
      Overrides:
      getContainingClass in class org.springframework.core.annotation.AnnotatedMethod
    • shouldValidateArguments

      public boolean shouldValidateArguments()
      Whether the method arguments are a candidate for method validation, which is the case when there are parameter jakarta.validation.Constraint annotations.

      The presence of jakarta.validation.Valid by itself does not trigger method validation since such parameters are already validated at the level of argument resolvers.

      Note: if the class is annotated with Validated, this method returns false, deferring to method validation via AOP proxy.

      Since:
      6.1
    • shouldValidateReturnValue

      public boolean shouldValidateReturnValue()
      Whether the method return value is a candidate for method validation, which is the case when there are method jakarta.validation.Constraint or jakarta.validation.Valid annotations.

      Note: if the class is annotated with Validated, this method returns false, deferring to method validation via AOP proxy.

      Since:
      6.1
    • getResponseStatus

      @Nullable protected HttpStatusCode getResponseStatus()
      Return the specified response status, if any.
      Since:
      4.3.8
      See Also:
    • getResponseStatusReason

      @Nullable protected String getResponseStatusReason()
      Return the associated response status reason, if any.
      Since:
      4.3.8
      See Also:
    • getResolvedFromHandlerMethod

      @Nullable public HandlerMethod getResolvedFromHandlerMethod()
      Return the HandlerMethod from which this HandlerMethod instance was resolved via createWithResolvedBean().
    • createWithResolvedBean

      public 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.
    • getShortLogMessage

      public String getShortLogMessage()
      Return a short representation of this handler method for log message purposes.
      Since:
      4.3
    • equals

      public boolean equals(@Nullable Object other)
      Overrides:
      equals in class org.springframework.core.annotation.AnnotatedMethod
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class org.springframework.core.annotation.AnnotatedMethod
    • toString

      public String toString()
      Overrides:
      toString in class org.springframework.core.annotation.AnnotatedMethod
    • assertTargetBean

      protected void assertTargetBean(Method method, Object targetBean, Object[] args)
      Assert that the target bean class is an instance of the class where the given method is declared. In some cases the actual controller instance at request- processing time may be a JDK dynamic proxy (lazy initialization, prototype beans, and others). @Controller's that require proxying should prefer class-based proxy mechanisms.
    • formatInvokeError

      protected String formatInvokeError(String text, Object[] args)