## org.springframework.web.servlet.mvc.method
Class AbstractHandlerMethodAdapter

    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.method.AbstractHandlerMethodAdapter

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

Direct Known Subclasses:
  RequestMappingHandlerAdapter

    public abstract class AbstractHandlerMethodAdapter

extends WebContentGenerator
implements HandlerAdapter, Ordered

Abstract base class for `HandlerAdapter` implementations that support handlers of type `HandlerMethod`.

Since:
  3.1
Author:
  Arjen Poutsma

Field Summary

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
`AbstractHandlerMethodAdapter()`

Method Summary
`long` `getLastModified(HttpServletRequest request, Object handler)` Same contract as for HttpServlet's `getLastModified` method.
`protected abstract long` `getLastModifiedInternal(HttpServletRequest request, HandlerMethod handlerMethod)` Same contract as for `HttpServlet.getLastModified(HttpServletRequest)`.
`int` `getOrder()` 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)` Use the given handler to handle this request.
`protected abstract ModelAndView` `handleInternal(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod)` Use the given handler method to handle the request.
`void` `setOrder(int order)` Specify the order value for this HandlerAdapter bean.
`boolean` `supports(Object handler)` Given a handler instance, return whether or not this HandlerAdapter can support it.
`protected abstract boolean` `supportsInternal(HandlerMethod handlerMethod)` Given a handler method, return whether or not this adapter can support it.

Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator
`applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, preventCaching, 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`

Constructor Detail

### AbstractHandlerMethodAdapter

    public AbstractHandlerMethodAdapter()

Method Detail

### setOrder

    public void setOrder(int order)

  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()

  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

### supports

    public final boolean supports(Object handler)

  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);`

  This implementation expects the handler to be an `HandlerMethod`.

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

### supportsInternal

    protected abstract boolean supportsInternal(HandlerMethod handlerMethod)

  Given a handler method, return whether or not this adapter can support it.

  Parameters:
    `handlerMethod` - the handler method to check
  Returns:
    whether or not this adapter can adapt the given method

### handle

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

  Use the given handler to handle this request. The workflow that is required may vary widely.

  This implementation expects the handler to be an `HandlerMethod`.

  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

### handleInternal

    protected abstract ModelAndView handleInternal(HttpServletRequest request,
                                                   HttpServletResponse response,
                                                   HandlerMethod handlerMethod)
                                            throws Exception

  Use the given handler method to handle the request.

  Parameters:
    `request` - current HTTP request
    `response` - current HTTP response
    `handlerMethod` - handler method to use. This object must have previously been passed to the `supportsInternal(HandlerMethod)` 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

### getLastModified

    public final long getLastModified(HttpServletRequest request,
                                      Object handler)

  Same contract as for HttpServlet's `getLastModified` method. Can simply return -1 if there's no support in the handler class.

  This implementation expects the handler to be an `HandlerMethod`.

  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:
    `HttpServlet.getLastModified(javax.servlet.http.HttpServletRequest)`, `LastModified.getLastModified(javax.servlet.http.HttpServletRequest)`

### getLastModifiedInternal

    protected abstract long getLastModifiedInternal(HttpServletRequest request,
                                                    HandlerMethod handlerMethod)

  Same contract as for `HttpServlet.getLastModified(HttpServletRequest)`.

  Parameters:
    `request` - current HTTP request
    `handlerMethod` - handler method to use
  Returns:
    the lastModified value for the given handler