Class AbstractHandlerMethodMapping<T>
java.lang.Object
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.reactive.handler.AbstractHandlerMapping
org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping<T>
- Type Parameters:
- T- the mapping for a- HandlerMethodcontaining the conditions needed to match the handler method to an incoming request.
- All Implemented Interfaces:
- Aware,- BeanNameAware,- InitializingBean,- ApplicationContextAware,- Ordered,- HandlerMapping
- Direct Known Subclasses:
- RequestMappingInfoHandlerMapping
public abstract class AbstractHandlerMethodMapping<T>
extends AbstractHandlerMapping
implements InitializingBean
Abstract base class for 
HandlerMapping implementations that define
 a mapping between a request and a HandlerMethod.
 For each registered handler method, a unique mapping is maintained with
 subclasses defining the details of the mapping type <T>.
- Since:
- 5.0
- Author:
- Rossen Stoyanchev, Brian Clozel, Sam Brannen
- 
Field SummaryFields inherited from class org.springframework.web.reactive.handler.AbstractHandlerMappingmappingsLoggerFields inherited from class org.springframework.context.support.ApplicationObjectSupportloggerFields inherited from interface org.springframework.web.reactive.HandlerMappingBEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTEFields inherited from interface org.springframework.core.OrderedHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidDetects handler methods at initialization.protected HandlerMethodcreateHandlerMethod(Object handler, Method method) Create the HandlerMethod instance.protected voiddetectHandlerMethods(Object handler) Look for handler methods in a handler.protected CorsConfigurationgetCorsConfiguration(Object handler, ServerWebExchange exchange) Retrieve the CORS configuration for the given handler.getDirectPaths(T mapping) Return 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.Return a (read-only) map with all mappings and HandlerMethod's.protected abstract Comparator<T>getMappingComparator(ServerWebExchange exchange) Return a comparator for sorting matching mappings.protected abstract TgetMappingForMethod(Method method, Class<?> handlerType) Provide the mapping for a handler method.protected abstract TgetMatchingMapping(T mapping, ServerWebExchange exchange) Check if a mapping matches the current request and return a (potentially new) mapping with conditions relevant to the current request.protected voidhandleMatch(T mapping, HandlerMethod handlerMethod, ServerWebExchange exchange) Invoked when a matching mapping is found.protected HandlerMethodhandleNoMatch(Set<T> mappings, ServerWebExchange exchange) Invoked when no matching mapping is not found.protected voidhandlerMethodsInitialized(Map<T, HandlerMethod> handlerMethods) Invoked after all handler methods have been detected.protected booleanhasCorsConfigurationSource(Object handler) Returntrueif there is aCorsConfigurationSourcefor this handler.protected CorsConfigurationinitCorsConfiguration(Object handler, Method method, T mapping) Extract and return the CORS configuration for the mapping.protected voidScan beans in the ApplicationContext, detect and register handler methods.protected abstract booleanWhether the given type is a handler with handler methods.protected HandlerMethodlookupHandlerMethod(ServerWebExchange exchange) Look up the best-matching handler method for the current request.protected voidregisterHandlerMethod(Object handler, Method method, T mapping) Register a handler method and its unique mapping.voidregisterMapping(T mapping, Object handler, Method method) Register the given mapping.voidunregisterMapping(T mapping) Un-register the given mapping.Methods inherited from class org.springframework.web.reactive.handler.AbstractHandlerMappingformatMappingName, getCorsProcessor, getHandler, getOrder, getPathPatternParser, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setOrder, setUseCaseSensitiveMatch, setUseTrailingSlashMatchMethods inherited from class org.springframework.context.support.ApplicationObjectSupportgetApplicationContext, getMessageSourceAccessor, initApplicationContext, initApplicationContext, isContextRequired, obtainApplicationContext, requiredContextClass, setApplicationContext
- 
Constructor Details- 
AbstractHandlerMethodMappingpublic AbstractHandlerMethodMapping()
 
- 
- 
Method Details- 
getHandlerMethodsReturn a (read-only) map with all mappings and HandlerMethod's.
- 
registerMappingRegister the given mapping.This method may be invoked at runtime after initialization has completed. - Parameters:
- mapping- the mapping for the handler method
- handler- the handler
- method- the method
 
- 
unregisterMappingUn-register the given mapping.This method may be invoked at runtime after initialization has completed. - Parameters:
- mapping- the mapping to unregister
 
- 
afterPropertiesSetpublic void afterPropertiesSet()Detects handler methods at initialization.- Specified by:
- afterPropertiesSetin interface- InitializingBean
 
- 
initHandlerMethodsprotected void initHandlerMethods()Scan beans in the ApplicationContext, detect and register handler methods.
- 
detectHandlerMethodsLook for handler methods in a handler.- Parameters:
- handler- the bean name of a handler or a handler instance
 
- 
registerHandlerMethodRegister a handler method and its unique mapping. Invoked at startup for each detected handler method.- Parameters:
- handler- the bean name of the handler or the handler instance
- method- the method to register
- mapping- the mapping conditions associated with the handler method
- Throws:
- IllegalStateException- if another method was already registered under the same mapping
 
- 
createHandlerMethodCreate the HandlerMethod instance.- Parameters:
- handler- either a bean name or an actual handler instance
- method- the target method
- Returns:
- the created HandlerMethod
 
- 
initCorsConfiguration@Nullable protected CorsConfiguration initCorsConfiguration(Object handler, Method method, T mapping) Extract and return the CORS configuration for the mapping.
- 
handlerMethodsInitializedInvoked after all handler methods have been detected.- Parameters:
- handlerMethods- a read-only map with handler methods and mappings.
 
- 
getHandlerInternalLook up a handler method for the given request.- Specified by:
- getHandlerInternalin class- AbstractHandlerMapping
- Parameters:
- exchange- the current exchange
- Returns:
- Monofor the matching handler, if any
 
- 
lookupHandlerMethodLook up the best-matching handler method for the current request. If multiple matches are found, the best match is selected.- Parameters:
- exchange- the current exchange
- Returns:
- the best-matching handler method, or nullif no match
- Throws:
- Exception
- See Also:
 
- 
handleMatchInvoked when a matching mapping is found.- Parameters:
- mapping- the matching mapping
- handlerMethod- the matching method
- exchange- the current exchange
 
- 
handleNoMatch@Nullable protected HandlerMethod handleNoMatch(Set<T> mappings, ServerWebExchange exchange) throws Exception Invoked when no matching mapping is not found.- Parameters:
- mappings- all registered mappings
- exchange- the current exchange
- Returns:
- an alternative HandlerMethod or null
- Throws:
- Exception- provides details that can be translated into an error status code
 
- 
hasCorsConfigurationSourceDescription copied from class:AbstractHandlerMappingReturntrueif there is aCorsConfigurationSourcefor this handler.- Overrides:
- hasCorsConfigurationSourcein class- AbstractHandlerMapping
 
- 
getCorsConfigurationDescription copied from class:AbstractHandlerMappingRetrieve the CORS configuration for the given handler.- Overrides:
- getCorsConfigurationin class- AbstractHandlerMapping
- Parameters:
- handler- the handler to check (never- null)
- exchange- the current exchange
- Returns:
- the CORS configuration for the handler, or nullif none
 
- 
isHandlerWhether the given type is a handler with handler methods.- Parameters:
- beanType- the type of the bean being checked
- Returns:
- "true" if this a handler type, "false" otherwise.
 
- 
getMappingForMethodProvide the mapping for a handler method. A method for which no mapping can be provided is not a handler method.- Parameters:
- method- the method to provide a mapping for
- handlerType- the handler type, possibly a sub-type of the method's declaring class
- Returns:
- the mapping, or nullif the method is not mapped
 
- 
getDirectPathsReturn the request mapping paths that are not patterns.- Since:
- 5.3
 
- 
getMatchingMappingCheck if a mapping matches the current request and return a (potentially new) mapping with conditions relevant to the current request.- Parameters:
- mapping- the mapping to get a match for
- exchange- the current exchange
- Returns:
- the match, or nullif the mapping doesn't match
 
- 
getMappingComparatorReturn a comparator for sorting matching mappings. The returned comparator should sort 'better' matches higher.- Parameters:
- exchange- the current exchange
- Returns:
- the comparator (never null)
 
 
-