org.springframework.web.servlet.config.annotation
Class WebMvcConfigurationSupport

java.lang.Object
  extended by org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport
All Implemented Interfaces:
Aware, ApplicationContextAware, ServletContextAware
Direct Known Subclasses:
DelegatingWebMvcConfiguration

public abstract class WebMvcConfigurationSupport
extends Object
implements ApplicationContextAware, ServletContextAware

A base class that provides default configuration for Spring MVC applications by registering Spring MVC infrastructure components to be detected by the DispatcherServlet. An application configuration class is not required to extend this class. A more likely place to start is to annotate an @Configuration class with @EnableWebMvc (see @EnableWebMvc and WebMvcConfigurer for details).

If the customization options available with use of @EnableWebMvc are not enough, consider extending directly from this class and override the appropriate methods. Remember to add @Configuration to your subclass and @Bean to any superclass @Bean methods you override.

This class registers the following HandlerMappings:

Registers these HandlerAdapters:

Registers a HandlerExceptionResolverComposite with this chain of exception resolvers:

Registers these other instances:

Since:
3.1
Author:
Rossen Stoyanchev
See Also:
EnableWebMvc, WebMvcConfigurer, WebMvcConfigurerAdapter

Constructor Summary
WebMvcConfigurationSupport()
           
 
Method Summary
protected  void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
          Add custom HandlerMethodArgumentResolvers to use in addition to the ones registered by default.
protected  void addDefaultHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)
          A method available to subclasses for adding default HandlerExceptionResolvers.
protected  void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters)
          Override this method to add default HttpMessageConverters.
protected  void addFormatters(FormatterRegistry registry)
          Override this method to add custom Converters and Formatters.
protected  void addInterceptors(InterceptorRegistry registry)
          Override this method to add Spring MVC interceptors for pre- and post-processing of controller invocation.
protected  void addResourceHandlers(ResourceHandlerRegistry registry)
          Override this method to add resource handlers for serving static resources.
protected  void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
          Add custom HandlerMethodReturnValueHandlers in addition to the ones registered by default.
protected  void addViewControllers(ViewControllerRegistry registry)
          Override this method to add view controllers.
 BeanNameUrlHandlerMapping beanNameHandlerMapping()
          Return a BeanNameUrlHandlerMapping ordered at 2 to map URL paths to controller bean names.
protected  void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
          Override this method to configure "default" Servlet handling.
protected  void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)
          Override this method to configure the list of HandlerExceptionResolvers to use.
protected  void configureMessageConverters(List<HttpMessageConverter<?>> converters)
          Override this method to add custom HttpMessageConverters to use with the RequestMappingHandlerAdapter and the ExceptionHandlerExceptionResolver.
 HandlerMapping defaultServletHandlerMapping()
          Return a handler mapping ordered at Integer.MAX_VALUE with a mapped default servlet handler.
protected  Object[] getInterceptors()
          Provide access to the shared handler interceptors used to configure HandlerMapping instances with.
protected  List<HttpMessageConverter<?>> getMessageConverters()
          Provides access to the shared HttpMessageConverters used by the RequestMappingHandlerAdapter and the ExceptionHandlerExceptionResolver.
protected  Validator getValidator()
          Override this method to provide a custom Validator.
 HandlerExceptionResolver handlerExceptionResolver()
          Returns a HandlerExceptionResolverComposite that contains a list of exception resolvers.
 HttpRequestHandlerAdapter httpRequestHandlerAdapter()
          Returns a HttpRequestHandlerAdapter for processing requests with HttpRequestHandlers.
 FormattingConversionService mvcConversionService()
          Returns a FormattingConversionService for use with annotated controller methods and the spring:eval JSP tag.
 Validator mvcValidator()
          Returns a global Validator instance for example for validating @ModelAttribute and @RequestBody method arguments.
 RequestMappingHandlerAdapter requestMappingHandlerAdapter()
          Returns a RequestMappingHandlerAdapter for processing requests through annotated controller methods.
 RequestMappingHandlerMapping requestMappingHandlerMapping()
          Return a RequestMappingHandlerMapping ordered at 0 for mapping requests to annotated controllers.
 HandlerMapping resourceHandlerMapping()
          Return a handler mapping ordered at Integer.MAX_VALUE-1 with mapped resource handlers.
 void setApplicationContext(ApplicationContext applicationContext)
          Set the ApplicationContext that this object runs in.
 void setServletContext(ServletContext servletContext)
          Set the ServletContext that this object runs in.
 SimpleControllerHandlerAdapter simpleControllerHandlerAdapter()
          Returns a SimpleControllerHandlerAdapter for processing requests with interface-based controllers.
 HandlerMapping viewControllerHandlerMapping()
          Return a handler mapping ordered at 1 to map URL paths directly to view names.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WebMvcConfigurationSupport

public WebMvcConfigurationSupport()
Method Detail

setServletContext

public void setServletContext(ServletContext servletContext)
Description copied from interface: ServletContextAware
Set the ServletContext that this object runs in.

Invoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked after ApplicationContextAware's setApplicationContext.

Specified by:
setServletContext in interface ServletContextAware
Parameters:
servletContext - ServletContext object to be used by this object
See Also:
InitializingBean.afterPropertiesSet(), ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)

setApplicationContext

public void setApplicationContext(ApplicationContext applicationContext)
                           throws BeansException
Description copied from interface: ApplicationContextAware
Set the ApplicationContext that this object runs in. Normally this call will be used to initialize the object.

Invoked 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.

Specified by:
setApplicationContext in interface ApplicationContextAware
Parameters:
applicationContext - the ApplicationContext object to be used by this object
Throws:
ApplicationContextException - in case of context initialization errors
BeansException - if thrown by application context methods
See Also:
BeanInitializationException

requestMappingHandlerMapping

@Bean
public RequestMappingHandlerMapping requestMappingHandlerMapping()
Return a RequestMappingHandlerMapping ordered at 0 for mapping requests to annotated controllers.


getInterceptors

protected final Object[] getInterceptors()
Provide access to the shared handler interceptors used to configure HandlerMapping instances with. This method cannot be overridden, use addInterceptors(InterceptorRegistry) instead.


addInterceptors

protected void addInterceptors(InterceptorRegistry registry)
Override this method to add Spring MVC interceptors for pre- and post-processing of controller invocation.

See Also:
InterceptorRegistry

viewControllerHandlerMapping

@Bean
public HandlerMapping viewControllerHandlerMapping()
Return a handler mapping ordered at 1 to map URL paths directly to view names. To configure view controllers, override addViewControllers(org.springframework.web.servlet.config.annotation.ViewControllerRegistry).


addViewControllers

protected void addViewControllers(ViewControllerRegistry registry)
Override this method to add view controllers.

See Also:
ViewControllerRegistry

beanNameHandlerMapping

@Bean
public BeanNameUrlHandlerMapping beanNameHandlerMapping()
Return a BeanNameUrlHandlerMapping ordered at 2 to map URL paths to controller bean names.


resourceHandlerMapping

@Bean
public HandlerMapping resourceHandlerMapping()
Return a handler mapping ordered at Integer.MAX_VALUE-1 with mapped resource handlers. To configure resource handling, override addResourceHandlers(org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry).


addResourceHandlers

protected void addResourceHandlers(ResourceHandlerRegistry registry)
Override this method to add resource handlers for serving static resources.

See Also:
ResourceHandlerRegistry

defaultServletHandlerMapping

@Bean
public HandlerMapping defaultServletHandlerMapping()
Return a handler mapping ordered at Integer.MAX_VALUE with a mapped default servlet handler. To configure "default" Servlet handling, override configureDefaultServletHandling(org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer).


configureDefaultServletHandling

protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
Override this method to configure "default" Servlet handling.

See Also:
DefaultServletHandlerConfigurer

requestMappingHandlerAdapter

@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter()
Returns a RequestMappingHandlerAdapter for processing requests through annotated controller methods. Consider overriding one of these other more fine-grained methods:


addArgumentResolvers

protected void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Add custom HandlerMethodArgumentResolvers to use in addition to the ones registered by default.

Custom argument resolvers are invoked before built-in resolvers except for those that rely on the presence of annotations (e.g. @RequestParameter, @PathVariable, etc.). The latter can be customized by configuring the RequestMappingHandlerAdapter directly.

Parameters:
argumentResolvers - the list of custom converters; initially an empty list.

addReturnValueHandlers

protected void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Add custom HandlerMethodReturnValueHandlers in addition to the ones registered by default.

Custom return value handlers are invoked before built-in ones except for those that rely on the presence of annotations (e.g. @ResponseBody, @ModelAttribute, etc.). The latter can be customized by configuring the RequestMappingHandlerAdapter directly.

Parameters:
returnValueHandlers - the list of custom handlers; initially an empty list.

getMessageConverters

protected final List<HttpMessageConverter<?>> getMessageConverters()
Provides access to the shared HttpMessageConverters used by the RequestMappingHandlerAdapter and the ExceptionHandlerExceptionResolver. This method cannot be overridden. Use configureMessageConverters(List) instead. Also see addDefaultHttpMessageConverters(List) that can be used to add default message converters.


configureMessageConverters

protected void configureMessageConverters(List<HttpMessageConverter<?>> converters)
Override this method to add custom HttpMessageConverters to use with the RequestMappingHandlerAdapter and the ExceptionHandlerExceptionResolver. Adding converters to the list turns off the default converters that would otherwise be registered by default. Also see addDefaultHttpMessageConverters(List) that can be used to add default message converters.

Parameters:
converters - a list to add message converters to; initially an empty list.

addDefaultHttpMessageConverters

protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Override this method to add default HttpMessageConverters.

Parameters:
messageConverters - the list to add the default message converters to

mvcConversionService

@Bean
public FormattingConversionService mvcConversionService()
Returns a FormattingConversionService for use with annotated controller methods and the spring:eval JSP tag. Also see addFormatters(org.springframework.format.FormatterRegistry) as an alternative to overriding this method.


addFormatters

protected void addFormatters(FormatterRegistry registry)
Override this method to add custom Converters and Formatters.


mvcValidator

@Bean
public Validator mvcValidator()
Returns a global Validator instance for example for validating @ModelAttribute and @RequestBody method arguments. Delegates to getValidator() first and if that returns null checks the classpath for the presence of a JSR-303 implementations before creating a LocalValidatorFactoryBean.If a JSR-303 implementation is not available, a no-op Validator is returned.


getValidator

protected Validator getValidator()
Override this method to provide a custom Validator.


httpRequestHandlerAdapter

@Bean
public HttpRequestHandlerAdapter httpRequestHandlerAdapter()
Returns a HttpRequestHandlerAdapter for processing requests with HttpRequestHandlers.


simpleControllerHandlerAdapter

@Bean
public SimpleControllerHandlerAdapter simpleControllerHandlerAdapter()
Returns a SimpleControllerHandlerAdapter for processing requests with interface-based controllers.


handlerExceptionResolver

@Bean
public HandlerExceptionResolver handlerExceptionResolver()
                                                  throws Exception
Returns a HandlerExceptionResolverComposite that contains a list of exception resolvers. To customize the list of exception resolvers, consider overriding configureHandlerExceptionResolvers(List).

Throws:
Exception

configureHandlerExceptionResolvers

protected void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)
Override this method to configure the list of HandlerExceptionResolvers to use. Adding resolvers to the list turns off the default resolvers that would otherwise be registered by default. Also see addDefaultHandlerExceptionResolvers(List) that can be used to add the default exception resolvers.

Parameters:
exceptionResolvers - a list to add exception resolvers to; initially an empty list.

addDefaultHandlerExceptionResolvers

protected final void addDefaultHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)
A method available to subclasses for adding default HandlerExceptionResolvers.

Adds the following exception resolvers: