## 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, 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
`RequestMappingInfoHandlerMapping()`

Method Summary
`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 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, 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, 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:
    the match, or `null` if the mapping doesn't match

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