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 whichRequestMappingInfodefines the mapping between a request and a handler method.- Since:
- 5.0
- Author:
- Rossen Stoyanchev, Sam Brannen
Field Summary
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
Fields inherited from interface org.springframework.web.reactive.HandlerMapping
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 org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor Summary
Constructors Constructor Description RequestMappingInfoHandlerMapping()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 RequestMappingInfogetMatchingMapping(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 voidhandleMatch(RequestMappingInfo info, HandlerMethod handlerMethod, ServerWebExchange exchange)Expose URI template variables, matrix variables, and producible media types in the request.protected HandlerMethodhandleNoMatch(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 org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping
afterPropertiesSet, createHandlerMethod, detectHandlerMethods, getCorsConfiguration, getHandlerMethods, getMappingForMethod, handlerMethodsInitialized, hasCorsConfigurationSource, initCorsConfiguration, initHandlerMethods, isHandler, lookupHandlerMethod, registerHandlerMethod, registerMapping, unregisterMapping
Methods inherited from class org.springframework.web.reactive.handler.AbstractHandlerMapping
formatMappingName, getCorsProcessor, getHandler, getOrder, getPathPatternParser, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setOrder, setUseCaseSensitiveMatch, setUseTrailingSlashMatch
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, initApplicationContext, initApplicationContext, isContextRequired, obtainApplicationContext, requiredContextClass, setApplicationContext
Constructor Detail
RequestMappingInfoHandlerMapping
public RequestMappingInfoHandlerMapping()
Method Detail
getMatchingMapping
protected 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:
getMatchingMappingin classAbstractHandlerMethodMapping<RequestMappingInfo>- Parameters:
info- the mapping to get a match forexchange- the current exchange- Returns:
- an info in case of a match; or
nullotherwise.
getMappingComparator
protected Comparator<RequestMappingInfo> getMappingComparator(ServerWebExchange exchange)
Provide a Comparator to sort RequestMappingInfos matched to a request.- Specified by:
getMappingComparatorin classAbstractHandlerMethodMapping<RequestMappingInfo>- Parameters:
exchange- the current exchange- Returns:
- the comparator (never
null)
getHandlerInternal
public reactor.core.publisher.Mono<HandlerMethod> getHandlerInternal(ServerWebExchange exchange)
Description copied from class:AbstractHandlerMethodMappingLook up a handler method for the given request.- Overrides:
getHandlerInternalin classAbstractHandlerMethodMapping<RequestMappingInfo>- Parameters:
exchange- the current exchange- Returns:
Monofor 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:
handleMatchin classAbstractHandlerMethodMapping<RequestMappingInfo>- Parameters:
info- the matching mappinghandlerMethod- the matching methodexchange- the current exchange- See Also:
HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE,HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE,HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE
handleNoMatch
protected 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:
handleNoMatchin 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