org.springframework.web.servlet.mvc.method

## Class RequestMappingInfoHandlerMapping

- java.lang.Object
- - org.springframework.context.support.ApplicationObjectSupport
  - - org.springframework.web.context.support.WebApplicationObjectSupport
    - - org.springframework.web.servlet.handler.AbstractHandlerMapping
      - - org.springframework.web.servlet.handler.AbstractHandlerMethodMapping<RequestMappingInfo>
        - - org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping

- All Implemented Interfaces:
    Aware, InitializingBean, ApplicationContextAware, Ordered, ServletContextAware, HandlerMapping
  Direct Known Subclasses:
    RequestMappingHandlerMapping

      public abstract class RequestMappingInfoHandlerMapping
      extends AbstractHandlerMethodMapping<RequestMappingInfo>

  Abstract base class for classes for which `RequestMappingInfo` defines the mapping between a request and a handler method.
  Since:
    3.1.0
  Author:
    Arjen Poutsma, Rossen Stoyanchev

- - ### Field Summary

    - ### Fields inherited from class org.springframework.context.support.ApplicationObjectSupport

      `logger`

    - ### Fields inherited from interface org.springframework.web.servlet.HandlerMapping

      `BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RequestMappingInfoHandlerMapping()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Comparator<RequestMappingInfo>` | `getMappingComparator(HttpServletRequest request)` Provide a Comparator to sort RequestMappingInfos matched to a request.
    `protected Set<String>` | `getMappingPathPatterns(RequestMappingInfo info)` Get the URL path patterns associated with this `RequestMappingInfo`.
    `protected RequestMappingInfo` | `getMatchingMapping(RequestMappingInfo info, HttpServletRequest request)` Check if the given RequestMappingInfo matches the current request and return a (potentially new) instance with conditions that match the current request -- for example with a subset of URL patterns.
    `protected void` | `handleMatch(RequestMappingInfo info, String lookupPath, HttpServletRequest request)` Expose URI template variables, matrix variables, and producible media types in the request.
    `protected HandlerMethod` | `handleNoMatch(Set<RequestMappingInfo> requestMappingInfos, String lookupPath, HttpServletRequest request)` Iterate all RequestMappingInfos once again, look if any match by URL at least and raise exceptions accordingly.

    - ### Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMethodMapping

      `afterPropertiesSet, createHandlerMethod, detectHandlerMethods, getHandlerInternal, getHandlerMethods, getMappingForMethod, handlerMethodsInitialized, initHandlerMethods, isHandler, lookupHandlerMethod, registerHandlerMethod, setDetectHandlerMethodsInAncestorContexts`

    - ### Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping

      `adaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initApplicationContext, initInterceptors, setAlwaysUseFullPath, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper`

    - ### Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport

      `getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext`

    - ### Methods inherited from class org.springframework.context.support.ApplicationObjectSupport

      `getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RequestMappingInfoHandlerMapping

          public RequestMappingInfoHandlerMapping()

  - ### Method Detail

    - #### getMappingPathPatterns

          protected Set<String> getMappingPathPatterns(RequestMappingInfo info)

      Get the URL path patterns associated with this `RequestMappingInfo`.
      Specified by:
        `getMappingPathPatterns` in class `AbstractHandlerMethodMapping<RequestMappingInfo>`

    - #### getMatchingMapping

          protected RequestMappingInfo getMatchingMapping(RequestMappingInfo info,
                                              HttpServletRequest request)

      Check if the given RequestMappingInfo matches the current request and return a (potentially new) instance with conditions that match the current request -- for example with a subset of URL patterns.
      Specified by:
        `getMatchingMapping` in class `AbstractHandlerMethodMapping<RequestMappingInfo>`
      Parameters:
        `info` - the mapping to get a match for
        `request` - the current HTTP servlet request
      Returns:
        an info in case of a match; or `null` otherwise.

    - #### getMappingComparator

          protected Comparator<RequestMappingInfo> getMappingComparator(HttpServletRequest request)

      Provide a Comparator to sort RequestMappingInfos matched to a request.
      Specified by:
        `getMappingComparator` in class `AbstractHandlerMethodMapping<RequestMappingInfo>`
      Parameters:
        `request` - the current request
      Returns:
        the comparator, never `null`

    - #### handleMatch

          protected void handleMatch(RequestMappingInfo info,
                         String lookupPath,
                         HttpServletRequest request)

      Expose URI template variables, matrix variables, and producible media types in the request.
      Overrides:
        `handleMatch` in class `AbstractHandlerMethodMapping<RequestMappingInfo>`
      Parameters:
        `info` - the matching mapping
        `lookupPath` - mapping lookup path within the current servlet mapping
        `request` - the current request
      See Also:
        `HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE`, `HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE`, `HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE`

    - #### handleNoMatch

          protected HandlerMethod handleNoMatch(Set<RequestMappingInfo> requestMappingInfos,
                                    String lookupPath,
                                    HttpServletRequest request)
                                         throws ServletException

      Iterate all RequestMappingInfos once again, look if any match by URL at least and raise exceptions accordingly.
      Overrides:
        `handleNoMatch` in class `AbstractHandlerMethodMapping<RequestMappingInfo>`
      Parameters:
        `requestMappingInfos` - all registered mappings
        `lookupPath` - mapping lookup path within the current servlet mapping
        `request` - the current request
      Throws:
        `HttpRequestMethodNotSupportedException` - if there are matches by URL but not by HTTP method
        `HttpMediaTypeNotAcceptableException` - if there are matches by URL but not by consumable media types
        `HttpMediaTypeNotAcceptableException` - if there are matches by URL but not by producible media types
        `ServletException` - in case of errors