org.springframework.web.servlet.config.annotation

## Class WebMvcConfigurationSupport

- java.lang.Object
- - org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport

- All Implemented Interfaces:
    Aware, ApplicationContextAware, ServletContextAware
  Direct Known Subclasses:
    DelegatingWebMvcConfiguration

      public class WebMvcConfigurationSupport
      extends Object
      implements ApplicationContextAware, ServletContextAware

  This is the main class providing the configuration behind the MVC Java config. It is typically imported by adding `@EnableWebMvc` to an application `@Configuration` class. An alternative more advanced option is to extend directly from this class and override methods as necessary, remembering to add `@Configuration` to the subclass and `@Bean` to overridden `@Bean` methods. For more details see the javadoc of `@EnableWebMvc`.

  This class registers the following `HandlerMappings`:

  - `RequestMappingHandlerMapping` ordered at 0 for mapping requests to annotated controller methods.
  - `HandlerMapping` ordered at 1 to map URL paths directly to view names.
  - `BeanNameUrlHandlerMapping` ordered at 2 to map URL paths to controller bean names.
  - `RouterFunctionMapping` ordered at 3 to map router functions.
  - `HandlerMapping` ordered at `Integer.MAX_VALUE-1` to serve static resource requests.
  - `HandlerMapping` ordered at `Integer.MAX_VALUE` to forward requests to the default servlet.

  Registers these `HandlerAdapters`:

  - `RequestMappingHandlerAdapter` for processing requests with annotated controller methods.
  - `HttpRequestHandlerAdapter` for processing requests with `HttpRequestHandlers`.
  - `SimpleControllerHandlerAdapter` for processing requests with interface-based `Controllers`.
  - `HandlerFunctionAdapter` for processing requests with router functions.

  Registers a `HandlerExceptionResolverComposite` with this chain of exception resolvers:

  - `ExceptionHandlerExceptionResolver` for handling exceptions through `ExceptionHandler` methods.
  - `ResponseStatusExceptionResolver` for exceptions annotated with `ResponseStatus`.
  - `DefaultHandlerExceptionResolver` for resolving known Spring exception types

  Registers an `AntPathMatcher` and a `UrlPathHelper` to be used by:

  - the `RequestMappingHandlerMapping`,
  - the `HandlerMapping` for ViewControllers
  - and the `HandlerMapping` for serving resources
  Note that those beans can be configured with a `PathMatchConfigurer`.

  Both the `RequestMappingHandlerAdapter` and the `ExceptionHandlerExceptionResolver` are configured with default instances of the following by default:

  - a `ContentNegotiationManager`
  - a `DefaultFormattingConversionService`
  - an `OptionalValidatorFactoryBean` if a JSR-303 implementation is available on the classpath
  - a range of `HttpMessageConverters` depending on the third-party libraries available on the classpath.
  Since:
    3.1
  Author:
    Rossen Stoyanchev, Brian Clozel, Sebastien Deleuze
  See Also:
    `EnableWebMvc`, `WebMvcConfigurer`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `WebMvcConfigurationSupport()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)` Add custom `HandlerMethodArgumentResolvers` to use in addition to the ones registered by default.
    `protected void` | `addCorsMappings(CorsRegistry registry)` Override this method to configure cross-origin requests processing.
    `protected void` | `addDefaultHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers, ContentNegotiationManager mvcContentNegotiationManager)` A method available to subclasses for adding default `HandlerExceptionResolvers`.
    `protected void` | `addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters)` Adds a set of default HttpMessageConverter instances to the given list.
    `protected void` | `addFormatters(FormatterRegistry registry)` Override this method to add custom `Converter` and/or `Formatter` delegates to the common `FormattingConversionService`.
    `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(FormattingConversionService conversionService, ResourceUrlProvider resourceUrlProvider)` Return a `BeanNameUrlHandlerMapping` ordered at 2 to map URL paths to controller bean names.
    `protected void` | `configureAsyncSupport(AsyncSupportConfigurer configurer)` Override this method to configure asynchronous request processing options.
    `protected void` | `configureContentNegotiation(ContentNegotiationConfigurer configurer)` Override this method to configure content negotiation.
    `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`.
    `protected void` | `configurePathMatch(PathMatchConfigurer configurer)` Override this method to configure path matching options.
    `protected void` | `configureViewResolvers(ViewResolverRegistry registry)` Override this method to configure view resolution.
    `protected ExceptionHandlerExceptionResolver` | `createExceptionHandlerExceptionResolver()` Protected method for plugging in a custom subclass of `ExceptionHandlerExceptionResolver`.
    `protected RequestMappingHandlerAdapter` | `createRequestMappingHandlerAdapter()` Protected method for plugging in a custom subclass of `RequestMappingHandlerAdapter`.
    `protected RequestMappingHandlerMapping` | `createRequestMappingHandlerMapping()` Protected method for plugging in a custom subclass of `RequestMappingHandlerMapping`.
    `HandlerMapping` | `defaultServletHandlerMapping()` Return a handler mapping ordered at Integer.MAX_VALUE with a mapped default servlet handler.
    `protected void` | `extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)` Override this method to extend or modify the list of `HandlerExceptionResolvers` after it has been configured.
    `protected void` | `extendMessageConverters(List<HttpMessageConverter<?>> converters)` Override this method to extend or modify the list of converters after it has been configured.
    `FlashMapManager` | `flashMapManager()`
    `ApplicationContext` | `getApplicationContext()` Return the associated Spring `ApplicationContext`.
    `protected List<HandlerMethodArgumentResolver>` | `getArgumentResolvers()` Provide access to the shared custom argument resolvers used by the `RequestMappingHandlerAdapter` and the `ExceptionHandlerExceptionResolver`.
    `protected AsyncSupportConfigurer` | `getAsyncSupportConfigurer()` Callback for building the `AsyncSupportConfigurer`.
    `protected ConfigurableWebBindingInitializer` | `getConfigurableWebBindingInitializer(FormattingConversionService mvcConversionService, Validator mvcValidator)` Return the `ConfigurableWebBindingInitializer` to use for initializing all `WebDataBinder` instances.
    `protected Map<String,CorsConfiguration>` | `getCorsConfigurations()` Return the registered `CorsConfiguration` objects, keyed by path pattern.
    `protected Map<String,MediaType>` | `getDefaultMediaTypes()`
    `protected Object[]` | `getInterceptors(FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider)` Provide access to the shared handler interceptors used to configure `HandlerMapping` instances with.
    `protected MessageCodesResolver` | `getMessageCodesResolver()` Override this method to provide a custom `MessageCodesResolver`.
    `protected List<HttpMessageConverter<?>>` | `getMessageConverters()` Provides access to the shared `HttpMessageConverters` used by the `RequestMappingHandlerAdapter` and the `ExceptionHandlerExceptionResolver`.
    `protected PathMatchConfigurer` | `getPathMatchConfigurer()` Callback for building the `PathMatchConfigurer`.
    `protected List<HandlerMethodReturnValueHandler>` | `getReturnValueHandlers()` Provide access to the shared return value handlers used by the `RequestMappingHandlerAdapter` and the `ExceptionHandlerExceptionResolver`.
    `ServletContext` | `getServletContext()` Return the associated `ServletContext`.
    `protected Validator` | `getValidator()` Override this method to provide a custom `Validator`.
    `HandlerExceptionResolver` | `handlerExceptionResolver(ContentNegotiationManager contentNegotiationManager)` Returns a `HandlerExceptionResolverComposite` containing a list of exception resolvers obtained either through `configureHandlerExceptionResolvers(java.util.List<org.springframework.web.servlet.HandlerExceptionResolver>)` or through `addDefaultHandlerExceptionResolvers(java.util.List<org.springframework.web.servlet.HandlerExceptionResolver>, org.springframework.web.accept.ContentNegotiationManager)`.
    `HandlerFunctionAdapter` | `handlerFunctionAdapter()` Returns a `HandlerFunctionAdapter` for processing requests through handler functions.
    `HttpRequestHandlerAdapter` | `httpRequestHandlerAdapter()` Returns a `HttpRequestHandlerAdapter` for processing requests with `HttpRequestHandlers`.
    `LocaleResolver` | `localeResolver()`
    `ContentNegotiationManager` | `mvcContentNegotiationManager()` Return a `ContentNegotiationManager` instance to use to determine requested media types in a given request.
    `FormattingConversionService` | `mvcConversionService()` Return a `FormattingConversionService` for use with annotated controllers.
    `HandlerMappingIntrospector` | `mvcHandlerMappingIntrospector()`
    `PathMatcher` | `mvcPathMatcher()` Return a global `PathMatcher` instance which is used for URL path matching with String patterns.
    `PathPatternParser` | `mvcPatternParser()` Return a global `PathPatternParser` instance to use for parsing patterns to match to the `RequestPath`.
    `ResourceUrlProvider` | `mvcResourceUrlProvider()` A `ResourceUrlProvider` bean for use with the MVC dispatcher.
    `CompositeUriComponentsContributor` | `mvcUriComponentsContributor(FormattingConversionService conversionService, RequestMappingHandlerAdapter requestMappingHandlerAdapter)` Return an instance of `CompositeUriComponentsContributor` for use with `MvcUriComponentsBuilder`.
    `UrlPathHelper` | `mvcUrlPathHelper()` Return a global `UrlPathHelper` instance which is used to resolve the request mapping path for an application.
    `Validator` | `mvcValidator()` Return a global `Validator` instance for example for validating `@ModelAttribute` and `@RequestBody` method arguments.
    `ViewResolver` | `mvcViewResolver(ContentNegotiationManager contentNegotiationManager)` Register a `ViewResolverComposite` that contains a chain of view resolvers to use for view resolution.
    `RequestMappingHandlerAdapter` | `requestMappingHandlerAdapter(ContentNegotiationManager contentNegotiationManager, FormattingConversionService conversionService, Validator validator)` Returns a `RequestMappingHandlerAdapter` for processing requests through annotated controller methods.
    `RequestMappingHandlerMapping` | `requestMappingHandlerMapping(ContentNegotiationManager contentNegotiationManager, FormattingConversionService conversionService, ResourceUrlProvider resourceUrlProvider)` Return a `RequestMappingHandlerMapping` ordered at 0 for mapping requests to annotated controllers.
    `HandlerMapping` | `resourceHandlerMapping(ContentNegotiationManager contentNegotiationManager, FormattingConversionService conversionService, ResourceUrlProvider resourceUrlProvider)` Return a handler mapping ordered at Integer.MAX_VALUE-1 with mapped resource handlers.
    `RouterFunctionMapping` | `routerFunctionMapping(FormattingConversionService conversionService, ResourceUrlProvider resourceUrlProvider)` Return a `RouterFunctionMapping` ordered at 3 to map router functions.
    `void` | `setApplicationContext(ApplicationContext applicationContext)` Set the Spring `ApplicationContext`, e.g.
    `void` | `setServletContext(ServletContext servletContext)` Set the `ServletContext`, e.g.
    `SimpleControllerHandlerAdapter` | `simpleControllerHandlerAdapter()` Returns a `SimpleControllerHandlerAdapter` for processing requests with interface-based controllers.
    `ThemeResolver` | `themeResolver()`
    `HandlerMapping` | `viewControllerHandlerMapping(FormattingConversionService conversionService, ResourceUrlProvider resourceUrlProvider)` Return a handler mapping ordered at 1 to map URL paths directly to view names.
    `RequestToViewNameTranslator` | `viewNameTranslator()`

    - ### 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

    - #### setApplicationContext

          public void setApplicationContext(@Nullable
                                            ApplicationContext applicationContext)

      Set the Spring `ApplicationContext`, e.g. for resource loading.
      Specified by:
        `setApplicationContext` in interface `ApplicationContextAware`
      Parameters:
        `applicationContext` - the ApplicationContext object to be used by this object
      See Also:
        `BeanInitializationException`

    - #### getApplicationContext

          @Nullable
          public final ApplicationContext getApplicationContext()

      Return the associated Spring `ApplicationContext`.
      Since:
        4.2

    - #### setServletContext

          public void setServletContext(@Nullable
                                        ServletContext servletContext)

      Set the `ServletContext`, e.g. for resource handling, looking up file extensions, etc.
      Specified by:
        `setServletContext` in interface `ServletContextAware`
      Parameters:
        `servletContext` - the ServletContext object to be used by this object
      See Also:
        `InitializingBean.afterPropertiesSet()`, `ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)`

    - #### getServletContext

          @Nullable
          public final ServletContext getServletContext()

      Return the associated `ServletContext`.
      Since:
        4.2

    - #### requestMappingHandlerMapping

          @Bean
          public RequestMappingHandlerMapping requestMappingHandlerMapping(@Qualifier(value="mvcContentNegotiationManager")
                                                                                 ContentNegotiationManager contentNegotiationManager,
                                                                                 @Qualifier(value="mvcConversionService")
                                                                                 FormattingConversionService conversionService,
                                                                                 @Qualifier(value="mvcResourceUrlProvider")
                                                                                 ResourceUrlProvider resourceUrlProvider)

      Return a `RequestMappingHandlerMapping` ordered at 0 for mapping requests to annotated controllers.

    - #### createRequestMappingHandlerMapping

          protected RequestMappingHandlerMapping createRequestMappingHandlerMapping()

      Protected method for plugging in a custom subclass of `RequestMappingHandlerMapping`.
      Since:
        4.0

    - #### getInterceptors

          protected final Object[] getInterceptors(FormattingConversionService mvcConversionService,
                                                   ResourceUrlProvider mvcResourceUrlProvider)

      Provide access to the shared handler interceptors used to configure `HandlerMapping` instances with.

      This method cannot be overridden; use `addInterceptors(org.springframework.web.servlet.config.annotation.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`

    - #### getPathMatchConfigurer

          protected PathMatchConfigurer getPathMatchConfigurer()

      Callback for building the `PathMatchConfigurer`. Delegates to `configurePathMatch(org.springframework.web.servlet.config.annotation.PathMatchConfigurer)`.
      Since:
        4.1

    - #### configurePathMatch

          protected void configurePathMatch(PathMatchConfigurer configurer)

      Override this method to configure path matching options.
      Since:
        4.0.3
      See Also:
        `PathMatchConfigurer`

    - #### mvcPatternParser

          @Bean
          public PathPatternParser mvcPatternParser()

      Return a global `PathPatternParser` instance to use for parsing patterns to match to the `RequestPath`. The returned instance can be configured using `configurePathMatch(PathMatchConfigurer)`.
      Since:
        5.3.4

    - #### mvcUrlPathHelper

          @Bean
          public UrlPathHelper mvcUrlPathHelper()

      Return a global `UrlPathHelper` instance which is used to resolve the request mapping path for an application. The instance can be configured via `configurePathMatch(PathMatchConfigurer)`.

      Note: This is only used when parsed patterns are not `enabled`.

      Since:
        4.1

    - #### mvcPathMatcher

          @Bean
          public PathMatcher mvcPathMatcher()

      Return a global `PathMatcher` instance which is used for URL path matching with String patterns. The returned instance can be configured using `configurePathMatch(PathMatchConfigurer)`.

      Note: This is only used when parsed patterns are not `enabled`.

      Since:
        4.1

    - #### mvcContentNegotiationManager

          @Bean
          public ContentNegotiationManager mvcContentNegotiationManager()

      Return a `ContentNegotiationManager` instance to use to determine requested media types in a given request.

    - #### getDefaultMediaTypes

          protected Map<String,MediaType> getDefaultMediaTypes()

    - #### configureContentNegotiation

          protected void configureContentNegotiation(ContentNegotiationConfigurer configurer)

      Override this method to configure content negotiation.
      See Also:
        `DefaultServletHandlerConfigurer`

    - #### viewControllerHandlerMapping

          @Bean
           @Nullable
          public HandlerMapping viewControllerHandlerMapping(@Qualifier(value="mvcConversionService")
                                                                              FormattingConversionService conversionService,
                                                                              @Qualifier(value="mvcResourceUrlProvider")
                                                                              ResourceUrlProvider resourceUrlProvider)

      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(@Qualifier(value="mvcConversionService")
                                                                        FormattingConversionService conversionService,
                                                                        @Qualifier(value="mvcResourceUrlProvider")
                                                                        ResourceUrlProvider resourceUrlProvider)

      Return a `BeanNameUrlHandlerMapping` ordered at 2 to map URL paths to controller bean names.

    - #### routerFunctionMapping

          @Bean
          public RouterFunctionMapping routerFunctionMapping(@Qualifier(value="mvcConversionService")
                                                                   FormattingConversionService conversionService,
                                                                   @Qualifier(value="mvcResourceUrlProvider")
                                                                   ResourceUrlProvider resourceUrlProvider)

      Return a `RouterFunctionMapping` ordered at 3 to map router functions. Consider overriding one of these other more fine-grained methods:
      - `addInterceptors(org.springframework.web.servlet.config.annotation.InterceptorRegistry)` for adding handler interceptors.
      - `addCorsMappings(org.springframework.web.servlet.config.annotation.CorsRegistry)` to configure cross origin requests processing.
      - `configureMessageConverters(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>>)` for adding custom message converters.
      - `configurePathMatch(PathMatchConfigurer)` for customizing the `PathPatternParser`.
      Since:
        5.2

    - #### resourceHandlerMapping

          @Bean
           @Nullable
          public HandlerMapping resourceHandlerMapping(@Qualifier(value="mvcContentNegotiationManager")
                                                                        ContentNegotiationManager contentNegotiationManager,
                                                                        @Qualifier(value="mvcConversionService")
                                                                        FormattingConversionService conversionService,
                                                                        @Qualifier(value="mvcResourceUrlProvider")
                                                                        ResourceUrlProvider resourceUrlProvider)

      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`

    - #### mvcResourceUrlProvider

          @Bean
          public ResourceUrlProvider mvcResourceUrlProvider()

      A `ResourceUrlProvider` bean for use with the MVC dispatcher.
      Since:
        4.1

    - #### defaultServletHandlerMapping

          @Bean
           @Nullable
          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(@Qualifier(value="mvcContentNegotiationManager")
                                                                                 ContentNegotiationManager contentNegotiationManager,
                                                                                 @Qualifier(value="mvcConversionService")
                                                                                 FormattingConversionService conversionService,
                                                                                 @Qualifier(value="mvcValidator")
                                                                                 Validator validator)

      Returns a `RequestMappingHandlerAdapter` for processing requests through annotated controller methods. Consider overriding one of these other more fine-grained methods:
      - `addArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>)` for adding custom argument resolvers.
      - `addReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>)` for adding custom return value handlers.
      - `configureMessageConverters(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>>)` for adding custom message converters.

    - #### createRequestMappingHandlerAdapter

          protected RequestMappingHandlerAdapter createRequestMappingHandlerAdapter()

      Protected method for plugging in a custom subclass of `RequestMappingHandlerAdapter`.
      Since:
        4.3

    - #### handlerFunctionAdapter

          @Bean
          public HandlerFunctionAdapter handlerFunctionAdapter()

      Returns a `HandlerFunctionAdapter` for processing requests through handler functions.
      Since:
        5.2

    - #### getConfigurableWebBindingInitializer

          protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer(FormattingConversionService mvcConversionService,
                                                                                           Validator mvcValidator)

      Return the `ConfigurableWebBindingInitializer` to use for initializing all `WebDataBinder` instances.

    - #### getMessageCodesResolver

          @Nullable
          protected MessageCodesResolver getMessageCodesResolver()

      Override this method to provide a custom `MessageCodesResolver`.

    - #### mvcConversionService

          @Bean
          public FormattingConversionService mvcConversionService()

      Return a `FormattingConversionService` for use with annotated controllers.

      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 `Converter` and/or `Formatter` delegates to the common `FormattingConversionService`.
      See Also:
        `mvcConversionService()`

    - #### mvcValidator

          @Bean
          public Validator mvcValidator()

      Return 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 `OptionalValidatorFactoryBean`.If a JSR-303 implementation is not available, a no-op `Validator` is returned.

    - #### getValidator

          @Nullable
          protected Validator getValidator()

      Override this method to provide a custom `Validator`.

    - #### getArgumentResolvers

          protected final List<HandlerMethodArgumentResolver> getArgumentResolvers()

      Provide access to the shared custom argument resolvers used by the `RequestMappingHandlerAdapter` and the `ExceptionHandlerExceptionResolver`.

      This method cannot be overridden; use `addArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>)` instead.

      Since:
        4.3

    - #### 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)

    - #### getReturnValueHandlers

          protected final List<HandlerMethodReturnValueHandler> getReturnValueHandlers()

      Provide access to the shared return value handlers used by the `RequestMappingHandlerAdapter` and the `ExceptionHandlerExceptionResolver`.

      This method cannot be overridden; use `addReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>)` instead.

      Since:
        4.3

    - #### 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(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>>)` instead. Also see `addDefaultHttpMessageConverters(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>>)` for adding 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(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>>)` for adding default message converters.

      Parameters:
        `converters` - a list to add message converters to (initially an empty list)

    - #### extendMessageConverters

          protected void extendMessageConverters(List<HttpMessageConverter<?>> converters)

      Override this method to extend or modify the list of converters after it has been configured. This may be useful for example to allow default converters to be registered and then insert a custom converter through this method.
      Parameters:
        `converters` - the list of configured converters to extend
      Since:
        4.1.3

    - #### addDefaultHttpMessageConverters

          protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters)

      Adds a set of default HttpMessageConverter instances to the given list. Subclasses can call this method from `configureMessageConverters(java.util.List<org.springframework.http.converter.HttpMessageConverter<?>>)`.
      Parameters:
        `messageConverters` - the list to add the default message converters to

    - #### getAsyncSupportConfigurer

          protected AsyncSupportConfigurer getAsyncSupportConfigurer()

      Callback for building the `AsyncSupportConfigurer`. Delegates to `configureAsyncSupport(AsyncSupportConfigurer)`.
      Since:
        5.3.2

    - #### configureAsyncSupport

          protected void configureAsyncSupport(AsyncSupportConfigurer configurer)

      Override this method to configure asynchronous request processing options.
      See Also:
        `AsyncSupportConfigurer`

    - #### mvcUriComponentsContributor

          @Bean
          public CompositeUriComponentsContributor mvcUriComponentsContributor(@Qualifier(value="mvcConversionService")
                                                                                     FormattingConversionService conversionService,
                                                                                     @Qualifier(value="requestMappingHandlerAdapter")
                                                                                     RequestMappingHandlerAdapter requestMappingHandlerAdapter)

      Return an instance of `CompositeUriComponentsContributor` for use with `MvcUriComponentsBuilder`.
      Since:
        4.0

    - #### 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(@Qualifier(value="mvcContentNegotiationManager")
                                                                         ContentNegotiationManager contentNegotiationManager)

      Returns a `HandlerExceptionResolverComposite` containing a list of exception resolvers obtained either through `configureHandlerExceptionResolvers(java.util.List<org.springframework.web.servlet.HandlerExceptionResolver>)` or through `addDefaultHandlerExceptionResolvers(java.util.List<org.springframework.web.servlet.HandlerExceptionResolver>, org.springframework.web.accept.ContentNegotiationManager)`.

      Note: This method cannot be made final due to CGLIB constraints. Rather than overriding it, consider overriding `configureHandlerExceptionResolvers(java.util.List<org.springframework.web.servlet.HandlerExceptionResolver>)` which allows for providing a list of resolvers.

    - #### 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(java.util.List<org.springframework.web.servlet.HandlerExceptionResolver>, org.springframework.web.accept.ContentNegotiationManager)` that can be used to add the default exception resolvers.

      Parameters:
        `exceptionResolvers` - a list to add exception resolvers to (initially an empty list)

    - #### extendHandlerExceptionResolvers

          protected void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)

      Override this method to extend or modify the list of `HandlerExceptionResolvers` after it has been configured.

      This may be useful for example to allow default resolvers to be registered and then insert a custom one through this method.

      Parameters:
        `exceptionResolvers` - the list of configured resolvers to extend.
      Since:
        4.3

    - #### addDefaultHandlerExceptionResolvers

          protected final void addDefaultHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers,
                                                                   ContentNegotiationManager mvcContentNegotiationManager)

      A method available to subclasses for adding default `HandlerExceptionResolvers`.

      Adds the following exception resolvers:

      - `ExceptionHandlerExceptionResolver` for handling exceptions through `ExceptionHandler` methods.
      - `ResponseStatusExceptionResolver` for exceptions annotated with `ResponseStatus`.
      - `DefaultHandlerExceptionResolver` for resolving known Spring exception types

    - #### createExceptionHandlerExceptionResolver

          protected ExceptionHandlerExceptionResolver createExceptionHandlerExceptionResolver()

      Protected method for plugging in a custom subclass of `ExceptionHandlerExceptionResolver`.
      Since:
        4.3

    - #### mvcViewResolver

          @Bean
          public ViewResolver mvcViewResolver(@Qualifier(value="mvcContentNegotiationManager")
                                                    ContentNegotiationManager contentNegotiationManager)

      Register a `ViewResolverComposite` that contains a chain of view resolvers to use for view resolution. By default, this resolver is ordered at 0 unless content negotiation view resolution is used in which case the order is raised to `Ordered.HIGHEST_PRECEDENCE`.

      If no other resolvers are configured, `ViewResolverComposite.resolveViewName(String, Locale)` returns null in order to allow other potential `ViewResolver` beans to resolve views.

      Since:
        4.1

    - #### configureViewResolvers

          protected void configureViewResolvers(ViewResolverRegistry registry)

      Override this method to configure view resolution.
      See Also:
        `ViewResolverRegistry`

    - #### getCorsConfigurations

          protected final Map<String,CorsConfiguration> getCorsConfigurations()

      Return the registered `CorsConfiguration` objects, keyed by path pattern.
      Since:
        4.2

    - #### addCorsMappings

          protected void addCorsMappings(CorsRegistry registry)

      Override this method to configure cross-origin requests processing.
      Since:
        4.2
      See Also:
        `CorsRegistry`

    - #### mvcHandlerMappingIntrospector

          @Bean
           @Lazy
          public HandlerMappingIntrospector mvcHandlerMappingIntrospector()

    - #### localeResolver

          @Bean
          public LocaleResolver localeResolver()

    - #### themeResolver

          @Bean
          public ThemeResolver themeResolver()

    - #### flashMapManager

          @Bean
          public FlashMapManager flashMapManager()

    - #### viewNameTranslator

          @Bean
          public RequestToViewNameTranslator viewNameTranslator()