org.springframework.web.servlet.config.annotation

## Interface WebMvcConfigurer

All Known Implementing Classes:
  WebMvcConfigurerAdapter

    public interface WebMvcConfigurer

Defines callback methods to customize the Java-based configuration for Spring MVC enabled via `@EnableWebMvc`.

`@EnableWebMvc`-annotated configuration classes may implement this interface to be called back and given a chance to customize the default configuration. Consider extending `WebMvcConfigurerAdapter`, which provides a stub implementation of all interface methods.

Since:
  3.1
Author:
  Rossen Stoyanchev, Keith Donald, David Syer

### Method Summary

Methods
`void` `addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)` Add resolvers to support custom controller method argument types.
`void` `addFormatters(FormatterRegistry registry)` Add `Converter`s and `Formatter`s in addition to the ones registered by default.
`void` `addInterceptors(InterceptorRegistry registry)` Add Spring MVC lifecycle interceptors for pre- and post-processing of controller method invocations.
`void` `addResourceHandlers(ResourceHandlerRegistry registry)` Add handlers to serve static resources such as images, js, and, css files from specific locations under web application root, the classpath, and others.
`void` `addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)` Add handlers to support custom controller method return value types.
`void` `addViewControllers(ViewControllerRegistry registry)` Add view controllers to create a direct mapping between a URL path and view name without the need for a controller in between.
`void` `configureAsyncSupport(AsyncSupportConfigurer configurer)` Configure asynchronous request handling options.
`void` `configureContentNegotiation(ContentNegotiationConfigurer configurer)` Configure content negotiation options.
`void` `configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)` Configure a handler to delegate unhandled requests by forwarding to the Servlet container's "default" servlet.
`void` `configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)` Configure the `HandlerExceptionResolver`s to handle unresolved controller exceptions.
`void` `configureMessageConverters(List<HttpMessageConverter<?>> converters)` Configure the `HttpMessageConverter`s to use in argument resolvers and return value handlers that support reading and/or writing to the body of the request and response.
`MessageCodesResolver` `getMessageCodesResolver()` Provide a custom `MessageCodesResolver` for building message codes from data binding and validation error codes.
`Validator` `getValidator()` Provide a custom `Validator` instead of the one created by default.

### Method Detail

#### addFormatters

    void addFormatters(FormatterRegistry registry)

Add `Converter`s and `Formatter`s in addition to the ones registered by default.

#### configureMessageConverters

    void configureMessageConverters(List<HttpMessageConverter<?>> converters)

Configure the `HttpMessageConverter`s to use in argument resolvers and return value handlers that support reading and/or writing to the body of the request and response. If no message converters are added to the list, default converters are added instead.

Parameters:
  `converters` - initially an empty list of converters

#### getValidator

    Validator getValidator()

Provide a custom `Validator` instead of the one created by default. The default implementation, assuming JSR-303 is on the classpath, is: `LocalValidatorFactoryBean`. Leave the return value as `null` to keep the default.

#### configureContentNegotiation

    void configureContentNegotiation(ContentNegotiationConfigurer configurer)

Configure content negotiation options.

#### configureAsyncSupport

    void configureAsyncSupport(AsyncSupportConfigurer configurer)

Configure asynchronous request handling options.

#### addArgumentResolvers

    void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)

Add resolvers to support custom controller method argument types.

This does not override the built-in support for resolving handler method arguments. To customize the built-in support for argument resolution, configure `RequestMappingHandlerAdapter` directly.

Parameters:
  `argumentResolvers` - initially an empty list

#### addReturnValueHandlers

    void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)

Add handlers to support custom controller method return value types.

Using this option does not override the built-in support for handling return values. To customize the built-in support for handling return values, configure RequestMappingHandlerAdapter directly.

Parameters:
  `returnValueHandlers` - initially an empty list

#### configureHandlerExceptionResolvers

    void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)

Configure the `HandlerExceptionResolver`s to handle unresolved controller exceptions. If no resolvers are added to the list, default exception resolvers are added instead.

Parameters:
  `exceptionResolvers` - initially an empty list

#### addInterceptors

    void addInterceptors(InterceptorRegistry registry)

Add Spring MVC lifecycle interceptors for pre- and post-processing of controller method invocations. Interceptors can be registered to apply to all requests or be limited to a subset of URL patterns.

#### getMessageCodesResolver

    MessageCodesResolver getMessageCodesResolver()

Provide a custom `MessageCodesResolver` for building message codes from data binding and validation error codes. Leave the return value as `null` to keep the default.

#### addViewControllers

    void addViewControllers(ViewControllerRegistry registry)

Add view controllers to create a direct mapping between a URL path and view name without the need for a controller in between.

#### addResourceHandlers

    void addResourceHandlers(ResourceHandlerRegistry registry)

Add handlers to serve static resources such as images, js, and, css files from specific locations under web application root, the classpath, and others.

#### configureDefaultServletHandling

    void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)

Configure a handler to delegate unhandled requests by forwarding to the Servlet container's "default" servlet. A common use case for this is when the `DispatcherServlet` is mapped to "/" thus overriding the Servlet container's default handling of static resources.