Class RequestMappingInfoHandlerMapping
java.lang.Object
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.reactive.handler.AbstractHandlerMapping
org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping<RequestMappingInfo>
org.springframework.web.reactive.result.method.RequestMappingInfoHandlerMapping
- All Implemented Interfaces:
Aware, BeanNameAware, InitializingBean, ApplicationContextAware, Ordered, 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:
- 5.0
- Author:
- Rossen Stoyanchev, Sam Brannen
-
Field Summary
Fields inherited from class AbstractHandlerMapping
mappingsLogger
Fields inherited from class ApplicationObjectSupport
logger
Fields inherited from interface HandlerMapping
API_VERSION_ATTRIBUTE, BEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE
Fields inherited from interface Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturn the request mapping paths that are not patterns.reactor.core.publisher.Mono
<HandlerMethod> getHandlerInternal
(ServerWebExchange exchange) Look up a handler method for the given request.protected Comparator
<RequestMappingInfo> getMappingComparator
(ServerWebExchange exchange) Provide a Comparator to sort RequestMappingInfos matched to a request.protected @Nullable RequestMappingInfo
getMatchingMapping
(RequestMappingInfo info, ServerWebExchange exchange) 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, HandlerMethod handlerMethod, ServerWebExchange exchange) Expose URI template variables, matrix variables, and producible media types in the request.protected @Nullable HandlerMethod
handleNoMatch
(Set<RequestMappingInfo> infos, ServerWebExchange exchange) Iterate all RequestMappingInfos once again, look if any match by URL at least and raise exceptions accordingly.Methods inherited from class AbstractHandlerMethodMapping
afterPropertiesSet, createHandlerMethod, detectHandlerMethods, getCorsConfiguration, getHandlerMethods, getMappingForMethod, handlerMethodsInitialized, hasCorsConfigurationSource, initCorsConfiguration, initHandlerMethods, isHandler, lookupHandlerMethod, registerHandlerMethod, registerMapping, unregisterMapping
Methods inherited from class AbstractHandlerMapping
formatMappingName, getApiVersionStrategy, getCorsProcessor, getHandler, getOrder, getPathPatternParser, setApiVersionStrategy, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setOrder, setUseCaseSensitiveMatch
-
Constructor Details
-
RequestMappingInfoHandlerMapping
public RequestMappingInfoHandlerMapping()
-
-
Method Details
-
getDirectPaths
Description copied from class:AbstractHandlerMethodMapping
Return the request mapping paths that are not patterns.- Overrides:
getDirectPaths
in classAbstractHandlerMethodMapping<RequestMappingInfo>
-
getMatchingMapping
protected @Nullable RequestMappingInfo getMatchingMapping(RequestMappingInfo info, ServerWebExchange exchange) 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 classAbstractHandlerMethodMapping<RequestMappingInfo>
- Parameters:
info
- the mapping to get a match forexchange
- the current exchange- Returns:
- an info in case of a match; or
null
otherwise.
-
getMappingComparator
Provide a Comparator to sort RequestMappingInfos matched to a request.- Specified by:
getMappingComparator
in classAbstractHandlerMethodMapping<RequestMappingInfo>
- Parameters:
exchange
- the current exchange- Returns:
- the comparator (never
null
)
-
getHandlerInternal
Description copied from class:AbstractHandlerMethodMapping
Look up a handler method for the given request.- Overrides:
getHandlerInternal
in classAbstractHandlerMethodMapping<RequestMappingInfo>
- Parameters:
exchange
- the current exchange- Returns:
Mono
for the matching handler, if any
-
handleMatch
protected void handleMatch(RequestMappingInfo info, HandlerMethod handlerMethod, ServerWebExchange exchange) Expose URI template variables, matrix variables, and producible media types in the request.- Overrides:
handleMatch
in classAbstractHandlerMethodMapping<RequestMappingInfo>
- Parameters:
info
- the matching mappinghandlerMethod
- the matching methodexchange
- the current exchange- See Also:
-
handleNoMatch
protected @Nullable HandlerMethod handleNoMatch(Set<RequestMappingInfo> infos, ServerWebExchange exchange) throws Exception Iterate all RequestMappingInfos once again, look if any match by URL at least and raise exceptions accordingly.- Overrides:
handleNoMatch
in classAbstractHandlerMethodMapping<RequestMappingInfo>
- Parameters:
infos
- all registered mappingsexchange
- the current exchange- Returns:
- an alternative HandlerMethod or
null
- Throws:
MethodNotAllowedException
- for matches by URL but not by HTTP methodUnsupportedMediaTypeStatusException
- if there are matches by URL and HTTP method but not by consumable media typesNotAcceptableStatusException
- if there are matches by URL and HTTP method but not by producible media typesServerWebInputException
- if there are matches by URL and HTTP method but not by query parameter conditionsException
- provides details that can be translated into an error status code
-