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
    Modifier and Type | Method and Description
    --- | ---
    `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.