public class ExceptionHandlerExceptionResolver extends AbstractHandlerMethodExceptionResolver implements ApplicationContextAware, InitializingBean
AbstractHandlerMethodExceptionResolver that resolves exceptions
through @ExceptionHandler methods.
Support for custom argument and return value types can be added via
setCustomArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>) and setCustomReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>).
Or alternatively to re-configure all argument and return value types use
setArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>) and setReturnValueHandlers(List).
loggerHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description |
|---|
ExceptionHandlerExceptionResolver() |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet()
Invoked by the containing
BeanFactory after it has set all bean properties
and satisfied BeanFactoryAware, ApplicationContextAware etc. |
protected ModelAndView |
doResolveHandlerMethodException(HttpServletRequest request,
HttpServletResponse response,
HandlerMethod handlerMethod,
Exception exception)
Find an
@ExceptionHandler method and invoke it to handle the raised exception. |
ApplicationContext |
getApplicationContext() |
HandlerMethodArgumentResolverComposite |
getArgumentResolvers()
Return the configured argument resolvers, or possibly
null if
not initialized yet via afterPropertiesSet(). |
ContentNegotiationManager |
getContentNegotiationManager()
Return the configured
ContentNegotiationManager. |
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<org.springframework.web.method.support.HandlerMethodArgumentResolver>). |
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<org.springframework.web.method.support.HandlerMethodReturnValueHandler>). |
Map<ControllerAdviceBean,ExceptionHandlerMethodResolver> |
getExceptionHandlerAdviceCache()
Return an unmodifiable Map with the
@ControllerAdvice
beans discovered in the ApplicationContext. |
protected ServletInvocableHandlerMethod |
getExceptionHandlerMethod(HandlerMethod handlerMethod,
Exception exception)
Find an
@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(). |
protected boolean |
hasGlobalExceptionHandlers()
Whether this resolver has global exception handlers, e.g.
|
void |
setApplicationContext(ApplicationContext applicationContext)
Set the ApplicationContext that this object runs in.
|
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 |
setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
Set the
ContentNegotiationManager to use to determine requested media types. |
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 |
setResponseBodyAdvice(List<ResponseBodyAdvice<?>> responseBodyAdvice)
Add one or more components to be invoked after the execution of a controller
method annotated with
@ResponseBody or returning ResponseEntity
but before the body is written to the response with the selected
HttpMessageConverter. |
void |
setReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Configure the complete list of supported return value types thus
overriding handlers that would otherwise be configured by default.
|
doResolveException, shouldApplyTobuildLogMessage, getOrder, hasHandlerMappings, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategorypublic void setCustomArgumentResolvers(@Nullable List<HandlerMethodArgumentResolver> argumentResolvers)
setArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>) instead.@Nullable public List<HandlerMethodArgumentResolver> getCustomArgumentResolvers()
null.public void setArgumentResolvers(@Nullable List<HandlerMethodArgumentResolver> argumentResolvers)
@Nullable public HandlerMethodArgumentResolverComposite getArgumentResolvers()
null if
not initialized yet via afterPropertiesSet().public void setCustomReturnValueHandlers(@Nullable List<HandlerMethodReturnValueHandler> returnValueHandlers)
setReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>).@Nullable public List<HandlerMethodReturnValueHandler> getCustomReturnValueHandlers()
null.public void setReturnValueHandlers(@Nullable List<HandlerMethodReturnValueHandler> returnValueHandlers)
@Nullable public HandlerMethodReturnValueHandlerComposite getReturnValueHandlers()
null if not
initialized yet via afterPropertiesSet().public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
These converters are used to convert from and to HTTP requests and responses.
public List<HttpMessageConverter<?>> getMessageConverters()
public void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
ContentNegotiationManager to use to determine requested media types.
If not set, the default constructor is used.public ContentNegotiationManager getContentNegotiationManager()
ContentNegotiationManager.public void setResponseBodyAdvice(@Nullable List<ResponseBodyAdvice<?>> responseBodyAdvice)
@ResponseBody or returning ResponseEntity
but before the body is written to the response with the selected
HttpMessageConverter.public void setApplicationContext(@Nullable ApplicationContext applicationContext)
ApplicationContextAwareInvoked after population of normal bean properties but before an init callback such
as InitializingBean.afterPropertiesSet()
or a custom init-method. Invoked after ResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader),
ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher) and
MessageSourceAware, if applicable.
setApplicationContext in interface ApplicationContextAwareapplicationContext - the ApplicationContext object to be used by this objectBeanInitializationException@Nullable public ApplicationContext getApplicationContext()
public void afterPropertiesSet()
InitializingBeanBeanFactory after it has set all bean properties
and satisfied BeanFactoryAware, ApplicationContextAware etc.
This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
afterPropertiesSet in interface InitializingBeanpublic Map<ControllerAdviceBean,ExceptionHandlerMethodResolver> getExceptionHandlerAdviceCache()
@ControllerAdvice
beans discovered in the ApplicationContext. The returned map will be empty if
the method is invoked before the bean has been initialized via
afterPropertiesSet().protected List<HandlerMethodArgumentResolver> getDefaultArgumentResolvers()
setCustomArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>).protected List<HandlerMethodReturnValueHandler> getDefaultReturnValueHandlers()
setReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>).protected boolean hasGlobalExceptionHandlers()
AbstractHandlerMethodExceptionResolverHandlerMethod that raised the exception and
therefore can apply to any handler.hasGlobalExceptionHandlers in class AbstractHandlerMethodExceptionResolver@Nullable protected ModelAndView doResolveHandlerMethodException(HttpServletRequest request, HttpServletResponse response, @Nullable HandlerMethod handlerMethod, Exception exception)
@ExceptionHandler method and invoke it to handle the raised exception.doResolveHandlerMethodException in class AbstractHandlerMethodExceptionResolverrequest - current HTTP requestresponse - current HTTP responsehandlerMethod - 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 executionnull for default processing@Nullable protected ServletInvocableHandlerMethod getExceptionHandlerMethod(@Nullable HandlerMethod handlerMethod, Exception exception)
@ExceptionHandler method for the given exception. The default
implementation searches methods in the class hierarchy of the controller first
and if not found, it continues searching for additional @ExceptionHandler
methods assuming some @ControllerAdvice
Spring-managed beans were detected.handlerMethod - the method where the exception was raised (may be null)exception - the raised exceptionnull if none