org.springframework.web.servlet.mvc.annotation

## Class AnnotationMethodHandlerAdapter

- java.lang.Object
- - org.springframework.context.support.ApplicationObjectSupport
  - - org.springframework.web.context.support.WebApplicationObjectSupport
    - - org.springframework.web.servlet.support.WebContentGenerator
      - - org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

- All Implemented Interfaces:
    Aware, BeanFactoryAware, ApplicationContextAware, Ordered, ServletContextAware, HandlerAdapter

  Deprecated.
  in Spring 3.2 in favor of `RequestMappingHandlerAdapter`

      @Deprecated
      public class AnnotationMethodHandlerAdapter
      extends WebContentGenerator
      implements HandlerAdapter, Ordered, BeanFactoryAware

  Implementation of the `HandlerAdapter` interface that maps handler methods based on HTTP paths, HTTP methods and request parameters expressed through the `RequestMapping` annotation.

  Supports request parameter binding through the `RequestParam` annotation. Also supports the `ModelAttribute` annotation for exposing model attribute values to the view, as well as `InitBinder` for binder initialization methods and `SessionAttributes` for automatic session management of specific attributes.

  This adapter can be customized through various bean properties. A common use case is to apply shared binder initialization logic through a custom `WebBindingInitializer`.

  Since:
    2.5
  Author:
    Juergen Hoeller, Arjen Poutsma
  See Also:
    `setPathMatcher(org.springframework.util.PathMatcher)`, `setMethodNameResolver(org.springframework.web.servlet.mvc.multiaction.MethodNameResolver)`, `setWebBindingInitializer(org.springframework.web.bind.support.WebBindingInitializer)`, `setSessionAttributeStore(org.springframework.web.bind.support.SessionAttributeStore)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `PAGE_NOT_FOUND_LOG_CATEGORY` Deprecated. Log category to use when no mapped handler is found for a request.
    `protected static Log` | `pageNotFoundLogger` Deprecated. Additional logger to use when no mapped handler is found for a request.

    - ### Fields inherited from class org.springframework.web.servlet.support.WebContentGenerator

      `METHOD_GET, METHOD_HEAD, METHOD_POST`

    - ### Fields inherited from class org.springframework.context.support.ApplicationObjectSupport

      `logger`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AnnotationMethodHandlerAdapter()` Deprecated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected ServletRequestDataBinder` | `createBinder(HttpServletRequest request, Object target, String objectName)` Deprecated. Template method for creating a new ServletRequestDataBinder instance.
    `protected HttpInputMessage` | `createHttpInputMessage(HttpServletRequest servletRequest)` Deprecated. Template method for creating a new HttpInputMessage instance.
    `protected HttpOutputMessage` | `createHttpOutputMessage(HttpServletResponse servletResponse)` Deprecated. Template method for creating a new HttpOuputMessage instance.
    `long` | `getLastModified(HttpServletRequest request, Object handler)` Deprecated. This method always returns -1 since an annotated controller can have many methods, each requiring separate lastModified calculations.
    `HttpMessageConverter<?>[]` | `getMessageConverters()` Deprecated. Return the message body converters that this adapter has been configured with.
    `int` | `getOrder()` Deprecated. Return the order value of this object, with a higher value meaning greater in terms of sorting.
    `ModelAndView` | `handle(HttpServletRequest request, HttpServletResponse response, Object handler)` Deprecated. Use the given handler to handle this request.
    `protected ModelAndView` | `invokeHandlerMethod(HttpServletRequest request, HttpServletResponse response, Object handler)` Deprecated.
    `void` | `setAlwaysUseFullPath(boolean alwaysUseFullPath)` Deprecated. Set if URL lookup should always use the full path within the current servlet context.
    `void` | `setBeanFactory(BeanFactory beanFactory)` Deprecated. Callback that supplies the owning factory to a bean instance.
    `void` | `setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)` Deprecated. Cache content produced by `@SessionAttributes` annotated handlers for the given number of seconds.
    `void` | `setCustomArgumentResolver(WebArgumentResolver argumentResolver)` Deprecated. Set a custom WebArgumentResolvers to use for special method parameter types.
    `void` | `setCustomArgumentResolvers(WebArgumentResolver[] argumentResolvers)` Deprecated. Set one or more custom WebArgumentResolvers to use for special method parameter types.
    `void` | `setCustomModelAndViewResolver(ModelAndViewResolver customModelAndViewResolver)` Deprecated. Set a custom ModelAndViewResolvers to use for special method return types.
    `void` | `setCustomModelAndViewResolvers(ModelAndViewResolver[] customModelAndViewResolvers)` Deprecated. Set one or more custom ModelAndViewResolvers to use for special method return types.
    `void` | `setMessageConverters(HttpMessageConverter<?>[] messageConverters)` Deprecated. Set the message body converters to use.
    `void` | `setMethodNameResolver(MethodNameResolver methodNameResolver)` Deprecated. Set the MethodNameResolver to use for resolving default handler methods (carrying an empty `@RequestMapping` annotation).
    `void` | `setOrder(int order)` Deprecated. Specify the order value for this HandlerAdapter bean.
    `void` | `setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)` Deprecated. Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g.
    `void` | `setPathMatcher(PathMatcher pathMatcher)` Deprecated. Set the PathMatcher implementation to use for matching URL paths against registered URL patterns.
    `void` | `setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)` Deprecated. Specify the strategy to store session attributes with.
    `void` | `setSynchronizeOnSession(boolean synchronizeOnSession)` Deprecated. Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client.
    `void` | `setUrlDecode(boolean urlDecode)` Deprecated. Set if context path and request URI should be URL-decoded.
    `void` | `setUrlPathHelper(UrlPathHelper urlPathHelper)` Deprecated. Set the UrlPathHelper to use for resolution of lookup paths.
    `void` | `setWebBindingInitializer(WebBindingInitializer webBindingInitializer)` Deprecated. Specify a WebBindingInitializer which will apply pre-configured configuration to every DataBinder that this controller uses.
    `boolean` | `supports(Object handler)` Deprecated. Given a handler instance, return whether or not this HandlerAdapter can support it.

    - ### Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator

      `applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, preventCaching, setAlwaysMustRevalidate, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader`

    - ### Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport

      `getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext`

    - ### Methods inherited from class org.springframework.context.support.ApplicationObjectSupport

      `getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### PAGE_NOT_FOUND_LOG_CATEGORY

          public static final String PAGE_NOT_FOUND_LOG_CATEGORY

      Deprecated.
      Log category to use when no mapped handler is found for a request.
      See Also:
        `pageNotFoundLogger`, Constant Field Values

    - #### pageNotFoundLogger

          protected static final Log pageNotFoundLogger

      Deprecated.
      Additional logger to use when no mapped handler is found for a request.
      See Also:
        `PAGE_NOT_FOUND_LOG_CATEGORY`

  - ### Constructor Detail

    - #### AnnotationMethodHandlerAdapter

          public AnnotationMethodHandlerAdapter()

      Deprecated.

  - ### Method Detail

    - #### setAlwaysUseFullPath

          public void setAlwaysUseFullPath(boolean alwaysUseFullPath)

      Deprecated.
      Set if URL lookup should always use the full path within the current servlet context. Else, the path within the current servlet mapping is used if applicable (that is, in the case of a ".../*" servlet mapping in web.xml).

      Default is "false".

      See Also:
        `UrlPathHelper.setAlwaysUseFullPath(boolean)`

    - #### setUrlDecode

          public void setUrlDecode(boolean urlDecode)

      Deprecated.
      Set if context path and request URI should be URL-decoded. Both are returned undecoded by the Servlet API, in contrast to the servlet path.

      Uses either the request encoding or the default encoding according to the Servlet spec (ISO-8859-1).

      See Also:
        `UrlPathHelper.setUrlDecode(boolean)`

    - #### setUrlPathHelper

          public void setUrlPathHelper(UrlPathHelper urlPathHelper)

      Deprecated.
      Set the UrlPathHelper to use for resolution of lookup paths.

      Use this to override the default UrlPathHelper with a custom subclass, or to share common UrlPathHelper settings across multiple HandlerMappings and HandlerAdapters.

    - #### setPathMatcher

          public void setPathMatcher(PathMatcher pathMatcher)

      Deprecated.
      Set the PathMatcher implementation to use for matching URL paths against registered URL patterns.

      Default is `AntPathMatcher`.

    - #### setMethodNameResolver

          public void setMethodNameResolver(MethodNameResolver methodNameResolver)

      Deprecated.
      Set the MethodNameResolver to use for resolving default handler methods (carrying an empty `@RequestMapping` annotation).

      Will only kick in when the handler method cannot be resolved uniquely through the annotation metadata already.

    - #### setWebBindingInitializer

          public void setWebBindingInitializer(WebBindingInitializer webBindingInitializer)

      Deprecated.
      Specify a WebBindingInitializer which will apply pre-configured configuration to every DataBinder that this controller uses.

    - #### setSessionAttributeStore

          public void setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)

      Deprecated.
      Specify the strategy to store session attributes with.

      Default is `DefaultSessionAttributeStore`, storing session attributes in the HttpSession, using the same attribute name as in the model.

    - #### setCacheSecondsForSessionAttributeHandlers

          public void setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)

      Deprecated.
      Cache content produced by `@SessionAttributes` annotated handlers for the given number of seconds. Default is 0, preventing caching completely.

      In contrast to the "cacheSeconds" property which will apply to all general handlers (but not to `@SessionAttributes` annotated handlers), this setting will apply to `@SessionAttributes` annotated handlers only.

      See Also:
        `WebContentGenerator.setCacheSeconds(int)`, `SessionAttributes`

    - #### setSynchronizeOnSession

          public void setSynchronizeOnSession(boolean synchronizeOnSession)

      Deprecated.
      Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client.

      More specifically, the execution of the `handleRequestInternal` method will get synchronized if this flag is "true". The best available session mutex will be used for the synchronization; ideally, this will be a mutex exposed by HttpSessionMutexListener.

      The session mutex is guaranteed to be the same object during the entire lifetime of the session, available under the key defined by the `SESSION_MUTEX_ATTRIBUTE` constant. It serves as a safe reference to synchronize on for locking on the current session.

      In many cases, the HttpSession reference itself is a safe mutex as well, since it will always be the same object reference for the same active logical session. However, this is not guaranteed across different servlet containers; the only 100% safe way is a session mutex.

      See Also:
        `HttpSessionMutexListener`, `WebUtils.getSessionMutex(javax.servlet.http.HttpSession)`

    - #### setParameterNameDiscoverer

          public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)

      Deprecated.
      Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g. for default attribute names).

      Default is a `LocalVariableTableParameterNameDiscoverer`.

    - #### setCustomArgumentResolver

          public void setCustomArgumentResolver(WebArgumentResolver argumentResolver)

      Deprecated.
      Set a custom WebArgumentResolvers to use for special method parameter types.

      Such a custom WebArgumentResolver will kick in first, having a chance to resolve an argument value before the standard argument handling kicks in.

    - #### setCustomArgumentResolvers

          public void setCustomArgumentResolvers(WebArgumentResolver[] argumentResolvers)

      Deprecated.
      Set one or more custom WebArgumentResolvers to use for special method parameter types.

      Any such custom WebArgumentResolver will kick in first, having a chance to resolve an argument value before the standard argument handling kicks in.

    - #### setCustomModelAndViewResolver

          public void setCustomModelAndViewResolver(ModelAndViewResolver customModelAndViewResolver)

      Deprecated.
      Set a custom ModelAndViewResolvers to use for special method return types.

      Such a custom ModelAndViewResolver will kick in first, having a chance to resolve a return value before the standard ModelAndView handling kicks in.

    - #### setCustomModelAndViewResolvers

          public void setCustomModelAndViewResolvers(ModelAndViewResolver[] customModelAndViewResolvers)

      Deprecated.
      Set one or more custom ModelAndViewResolvers to use for special method return types.

      Any such custom ModelAndViewResolver will kick in first, having a chance to resolve a return value before the standard ModelAndView handling kicks in.

    - #### setMessageConverters

          public void setMessageConverters(HttpMessageConverter<?>[] messageConverters)

      Deprecated.
      Set the message body converters to use.

      These converters are used to convert from and to HTTP requests and responses.

    - #### getMessageConverters

          public HttpMessageConverter<?>[] getMessageConverters()

      Deprecated.
      Return the message body converters that this adapter has been configured with.

    - #### setOrder

          public void setOrder(int order)

      Deprecated.
      Specify the order value for this HandlerAdapter bean.

      Default value is `Integer.MAX_VALUE`, meaning that it's non-ordered.

      See Also:
        `Ordered.getOrder()`

    - #### getOrder

          public int getOrder()

      Deprecated.
      Description copied from interface: `Ordered`
      Return the order value of this object, with a higher value meaning greater in terms of sorting.

      Normally starting with 0, with `Integer.MAX_VALUE` indicating the greatest value. Same order values will result in arbitrary positions for the affected objects.

      Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).

      Specified by:
        `getOrder` in interface `Ordered`
      Returns:
        the order value

    - #### setBeanFactory

          public void setBeanFactory(BeanFactory beanFactory)

      Deprecated.
      Description copied from interface: `BeanFactoryAware`
      Callback that supplies the owning factory to a bean instance.

      Invoked after the population of normal bean properties but before an initialization callback such as `InitializingBean.afterPropertiesSet()` or a custom init-method.

      Specified by:
        `setBeanFactory` in interface `BeanFactoryAware`
      Parameters:
        `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
      See Also:
        `BeanInitializationException`

    - #### supports

          public boolean supports(Object handler)

      Deprecated.
      Description copied from interface: `HandlerAdapter`
      Given a handler instance, return whether or not this HandlerAdapter can support it. Typical HandlerAdapters will base the decision on the handler type. HandlerAdapters will usually only support one handler type each.

      A typical implementation:

      `return (handler instanceof MyHandler);`

      Specified by:
        `supports` in interface `HandlerAdapter`
      Parameters:
        `handler` - handler object to check
      Returns:
        whether or not this object can use the given handler

    - #### handle

          public ModelAndView handle(HttpServletRequest request,
                            HttpServletResponse response,
                            Object handler)
                              throws Exception

      Deprecated.
      Description copied from interface: `HandlerAdapter`
      Use the given handler to handle this request. The workflow that is required may vary widely.
      Specified by:
        `handle` in interface `HandlerAdapter`
      Parameters:
        `request` - current HTTP request
        `response` - current HTTP response
        `handler` - handler to use. This object must have previously been passed to the `supports` method of this interface, which must have returned `true`.
      Returns:
        ModelAndView object with the name of the view and the required model data, or `null` if the request has been handled directly
      Throws:
        `Exception` - in case of errors

    - #### invokeHandlerMethod

          protected ModelAndView invokeHandlerMethod(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Object handler)
                                              throws Exception

      Deprecated.
      Throws:
        `Exception`

    - #### getLastModified

          public long getLastModified(HttpServletRequest request,
                             Object handler)

      Deprecated.
      This method always returns -1 since an annotated controller can have many methods, each requiring separate lastModified calculations. Instead, an `RequestMapping`-annotated method can calculate the lastModified value, call `WebRequest.checkNotModified(long)` to check it, and return `null` if that returns `true`.
      Specified by:
        `getLastModified` in interface `HandlerAdapter`
      Parameters:
        `request` - current HTTP request
        `handler` - handler to use
      Returns:
        the lastModified value for the given handler
      See Also:
        `WebRequest.checkNotModified(long)`

    - #### createBinder

          protected ServletRequestDataBinder createBinder(HttpServletRequest request,
                                              Object target,
                                              String objectName)
                                                   throws Exception

      Deprecated.
      Template method for creating a new ServletRequestDataBinder instance.

      The default implementation creates a standard ServletRequestDataBinder. This can be overridden for custom ServletRequestDataBinder subclasses.

      Parameters:
        `request` - current HTTP request
        `target` - the target object to bind onto (or `null` if the binder is just used to convert a plain parameter value)
        `objectName` - the objectName of the target object
      Returns:
        the ServletRequestDataBinder instance to use
      Throws:
        `Exception` - in case of invalid state or arguments
      See Also:
        `ServletRequestDataBinder.bind(javax.servlet.ServletRequest)`, `DataBinder.convertIfNecessary(Object, Class, org.springframework.core.MethodParameter)`

    - #### createHttpInputMessage

          protected HttpInputMessage createHttpInputMessage(HttpServletRequest servletRequest)
                                                     throws Exception

      Deprecated.
      Template method for creating a new HttpInputMessage instance.

      The default implementation creates a standard `ServletServerHttpRequest`. This can be overridden for custom `HttpInputMessage` implementations

      Parameters:
        `servletRequest` - current HTTP request
      Returns:
        the HttpInputMessage instance to use
      Throws:
        `Exception` - in case of errors

    - #### createHttpOutputMessage

          protected HttpOutputMessage createHttpOutputMessage(HttpServletResponse servletResponse)
                                                       throws Exception

      Deprecated.
      Template method for creating a new HttpOuputMessage instance.

      The default implementation creates a standard `ServletServerHttpResponse`. This can be overridden for custom `HttpOutputMessage` implementations

      Parameters:
        `servletResponse` - current HTTP response
      Returns:
        the HttpInputMessage instance to use
      Throws:
        `Exception` - in case of errors