org.springframework.web.servlet.mvc.method.annotation
Class ExceptionHandlerExceptionResolver

java.lang.Object
  extended by org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
      extended by org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver
          extended by org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver
All Implemented Interfaces:
InitializingBean, Ordered, HandlerExceptionResolver

public class ExceptionHandlerExceptionResolver
extends AbstractHandlerMethodExceptionResolver
implements InitializingBean

An AbstractHandlerMethodExceptionResolver that resolves exceptions through @ExceptionHandler methods.

Support for custom argument and return value types can be added via setCustomArgumentResolvers(java.util.List) and setCustomReturnValueHandlers(java.util.List). Or alternatively to re-configure all argument and return value types use setArgumentResolvers(java.util.List) and setReturnValueHandlers(List).

Since:
3.1
Author:
Rossen Stoyanchev

Field Summary
 
Fields inherited from class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
ExceptionHandlerExceptionResolver()
          Default constructor.
 
Method Summary
 void afterPropertiesSet()
          Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
protected  ModelAndView doResolveHandlerMethodException(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod, Exception exception)
          Find an @ExceptionHandler method and invoke it to handle the raised exception.
 HandlerMethodArgumentResolverComposite getArgumentResolvers()
          Return the configured argument resolvers, or possibly null if not initialized yet via afterPropertiesSet().
 List<HandlerMethodArgumentResolver> getCustomArgumentResolvers()
          Return the custom argument resolvers, or null.
 List<HandlerMethodReturnValueHandler> getCustomReturnValueHandlers()
          Return the custom return value handlers, or null.
protected  List<HandlerMethodArgumentResolver> getDefaultArgumentResolvers()
          Return the list of argument resolvers to use including built-in resolvers and custom resolvers provided via setCustomArgumentResolvers(java.util.List).
protected  List<HandlerMethodReturnValueHandler> getDefaultReturnValueHandlers()
          Return the list of return value handlers to use including built-in and custom handlers provided via setReturnValueHandlers(java.util.List).
protected  ServletInvocableHandlerMethod getExceptionHandlerMethod(HandlerMethod handlerMethod, Exception exception)
          Find the @ExceptionHandler method for the given exception.
 List<HttpMessageConverter<?>> getMessageConverters()
          Return the configured message body converters.
 HandlerMethodReturnValueHandlerComposite getReturnValueHandlers()
          Return the configured handlers, or possibly null if not initialized yet via afterPropertiesSet().
 void setArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
          Configure the complete list of supported argument types thus overriding the resolvers that would otherwise be configured by default.
 void setCustomArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
          Provide resolvers for custom argument types.
 void setCustomReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
          Provide handlers for custom return value types.
 void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
          Set the message body converters to use.
 void setReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
          Configure the complete list of supported return value types thus overriding handlers that would otherwise be configured by default.
 
Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver
doResolveException, shouldApplyTo
 
Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
buildLogMessage, getOrder, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExceptionHandlerExceptionResolver

public ExceptionHandlerExceptionResolver()
Default constructor.

Method Detail

setCustomArgumentResolvers

public void setCustomArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Provide resolvers for custom argument types. Custom resolvers are ordered after built-in ones. To override the built-in support for argument resolution use setArgumentResolvers(java.util.List) instead.


getCustomArgumentResolvers

public List<HandlerMethodArgumentResolver> getCustomArgumentResolvers()
Return the custom argument resolvers, or null.


setArgumentResolvers

public void setArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Configure the complete list of supported argument types thus overriding the resolvers that would otherwise be configured by default.


getArgumentResolvers

public HandlerMethodArgumentResolverComposite getArgumentResolvers()
Return the configured argument resolvers, or possibly null if not initialized yet via afterPropertiesSet().


setCustomReturnValueHandlers

public void setCustomReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Provide handlers for custom return value types. Custom handlers are ordered after built-in ones. To override the built-in support for return value handling use setReturnValueHandlers(java.util.List).


getCustomReturnValueHandlers

public List<HandlerMethodReturnValueHandler> getCustomReturnValueHandlers()
Return the custom return value handlers, or null.


setReturnValueHandlers

public void setReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Configure the complete list of supported return value types thus overriding handlers that would otherwise be configured by default.


getReturnValueHandlers

public HandlerMethodReturnValueHandlerComposite getReturnValueHandlers()
Return the configured handlers, or possibly null if not initialized yet via afterPropertiesSet().


setMessageConverters

public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Set the message body converters to use.

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


getMessageConverters

public List<HttpMessageConverter<?>> getMessageConverters()
Return the configured message body converters.


afterPropertiesSet

public void afterPropertiesSet()
Description copied from interface: InitializingBean
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

Specified by:
afterPropertiesSet in interface InitializingBean

getDefaultArgumentResolvers

protected List<HandlerMethodArgumentResolver> getDefaultArgumentResolvers()
Return the list of argument resolvers to use including built-in resolvers and custom resolvers provided via setCustomArgumentResolvers(java.util.List).


getDefaultReturnValueHandlers

protected List<HandlerMethodReturnValueHandler> getDefaultReturnValueHandlers()
Return the list of return value handlers to use including built-in and custom handlers provided via setReturnValueHandlers(java.util.List).


doResolveHandlerMethodException

protected ModelAndView doResolveHandlerMethodException(HttpServletRequest request,
                                                       HttpServletResponse response,
                                                       HandlerMethod handlerMethod,
                                                       Exception exception)
Find an @ExceptionHandler method and invoke it to handle the raised exception.

Specified by:
doResolveHandlerMethodException in class AbstractHandlerMethodExceptionResolver
Parameters:
request - current HTTP request
response - current HTTP response
handlerMethod - the executed handler method, or null if none chosen at the time of the exception (for example, if multipart resolution failed)
exception - the exception that got thrown during handler execution
Returns:
a corresponding ModelAndView to forward to, or null for default processing

getExceptionHandlerMethod

protected ServletInvocableHandlerMethod getExceptionHandlerMethod(HandlerMethod handlerMethod,
                                                                  Exception exception)
Find the @ExceptionHandler method for the given exception. The default implementation searches @ExceptionHandler methods in the class hierarchy of the method that raised the exception.

Parameters:
handlerMethod - the method where the exception was raised
exception - the raised exception
Returns:
a method to handle the exception, or null