## org.springframework.web.servlet.mvc.method.annotation
Class ServletInvocableHandlerMethod

    java.lang.Object
      org.springframework.web.method.HandlerMethod
          org.springframework.web.method.support.InvocableHandlerMethod
              org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod

    public class ServletInvocableHandlerMethod

extends InvocableHandlerMethod

Extends `InvocableHandlerMethod` with the ability to handle return values through a registered `HandlerMethodReturnValueHandler` and also supports setting the response status based on a method-level `@ResponseStatus` annotation.

A `null` return value (including void) may be interpreted as the end of request processing in combination with a `@ResponseStatus` annotation, a not-modified check condition (see `ServletWebRequest.checkNotModified(long)`), or a method argument that provides access to the response stream.

Since:
  3.1
Author:
  Rossen Stoyanchev

Field Summary

Fields inherited from class org.springframework.web.method.HandlerMethod
`logger`

Constructor Summary
`ServletInvocableHandlerMethod(HandlerMethod handlerMethod)` Create an instance from a `HandlerMethod`.
`ServletInvocableHandlerMethod(Object handler, Method method)` Creates an instance from the given handler and method.

Method Summary
`void` `invokeAndHandle(ServletWebRequest webRequest, ModelAndViewContainer mavContainer, Object... providedArgs)` Invokes the method and handles the return value through a registered `HandlerMethodReturnValueHandler`.
`void` `setHandlerMethodReturnValueHandlers(HandlerMethodReturnValueHandlerComposite returnValueHandlers)` Register `HandlerMethodReturnValueHandler` instances to use to handle return values.

Methods inherited from class org.springframework.web.method.support.InvocableHandlerMethod
`getDetailedErrorMessage, invokeForRequest, setDataBinderFactory, setHandlerMethodArgumentResolvers, setParameterNameDiscoverer`

Methods inherited from class org.springframework.web.method.HandlerMethod
`createWithResolvedBean, equals, getBean, getBeanType, getBridgedMethod, getMethod, getMethodAnnotation, getMethodParameters, getReturnType, getReturnValueType, hashCode, isVoid, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ServletInvocableHandlerMethod

    public ServletInvocableHandlerMethod(Object handler,
                                         Method method)

  Creates an instance from the given handler and method.

### ServletInvocableHandlerMethod

    public ServletInvocableHandlerMethod(HandlerMethod handlerMethod)

  Create an instance from a `HandlerMethod`.

Method Detail

### setHandlerMethodReturnValueHandlers

    public void setHandlerMethodReturnValueHandlers(HandlerMethodReturnValueHandlerComposite returnValueHandlers)

  Register `HandlerMethodReturnValueHandler` instances to use to handle return values.

### invokeAndHandle

    public final void invokeAndHandle(ServletWebRequest webRequest,
                                      ModelAndViewContainer mavContainer,
                                      Object... providedArgs)
                               throws Exception

  Invokes the method and handles the return value through a registered `HandlerMethodReturnValueHandler`.

  Parameters:
    `webRequest` - the current request
    `mavContainer` - the ModelAndViewContainer for this request
    `providedArgs` - "given" arguments matched by type, not resolved
  Throws:
    `Exception`