public abstract class AbstractHandlerMapping extends ApplicationObjectSupport implements HandlerMapping, Ordered, BeanNameAware
HandlerMapping
implementations.| Modifier and Type | Field and Description |
|---|---|
protected Log |
mappingsLogger
Dedicated "hidden" logger for request mappings.
|
loggerBEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTEHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description |
|---|
AbstractHandlerMapping() |
| Modifier and Type | Method and Description |
|---|---|
protected String |
formatMappingName() |
protected CorsConfiguration |
getCorsConfiguration(Object handler,
ServerWebExchange exchange)
Retrieve the CORS configuration for the given handler.
|
CorsProcessor |
getCorsProcessor()
Return the configured
CorsProcessor. |
reactor.core.publisher.Mono<Object> |
getHandler(ServerWebExchange exchange)
Return a handler for this request.
|
protected abstract reactor.core.publisher.Mono<?> |
getHandlerInternal(ServerWebExchange exchange)
Look up a handler for the given request, returning an empty
Mono
if no specific one is found. |
int |
getOrder()
Get the order value of this object.
|
PathPatternParser |
getPathPatternParser()
Return the
PathPatternParser instance that is used for
CORS configuration checks. |
protected boolean |
hasCorsConfigurationSource(Object handler)
Return
true if there is a CorsConfigurationSource for this handler. |
void |
setBeanName(String name)
Set the name of the bean in the bean factory that created this bean.
|
void |
setCorsConfigurations(Map<String,CorsConfiguration> corsConfigurations)
Set the "global" CORS configurations based on URL patterns.
|
void |
setCorsConfigurationSource(CorsConfigurationSource corsConfigurationSource)
Set the "global" CORS configuration source.
|
void |
setCorsProcessor(CorsProcessor corsProcessor)
Configure a custom
CorsProcessor to use to apply the matched
CorsConfiguration for a request. |
void |
setOrder(int order)
Specify the order value for this HandlerMapping bean.
|
void |
setUseCaseSensitiveMatch(boolean caseSensitiveMatch)
Shortcut method for setting the same property on the underlying pattern
parser in use.
|
void |
setUseTrailingSlashMatch(boolean trailingSlashMatch)
Shortcut method for setting the same property on the underlying pattern
parser in use.
|
getApplicationContext, getMessageSourceAccessor, initApplicationContext, initApplicationContext, isContextRequired, obtainApplicationContext, requiredContextClass, setApplicationContextprotected final Log mappingsLogger
public void setUseCaseSensitiveMatch(boolean caseSensitiveMatch)
getPathPatternParser() -- the underlying pattern parser
PathPatternParser.setCaseSensitive(boolean) -- the case
sensitive slash option, including its default value.
Note: aside from
public void setUseTrailingSlashMatch(boolean trailingSlashMatch)
getPathPatternParser() -- the underlying pattern parser
PathPatternParser.setMatchOptionalTrailingSeparator(boolean) --
the trailing slash option, including its default value.
public PathPatternParser getPathPatternParser()
PathPatternParser instance that is used for
CORS configuration checks.
Subclasses can also use this pattern parser for their own request
mapping purposes.public void setCorsConfigurations(Map<String,CorsConfiguration> corsConfigurations)
public void setCorsConfigurationSource(CorsConfigurationSource corsConfigurationSource)
setCorsConfigurations(Map)public void setCorsProcessor(CorsProcessor corsProcessor)
CorsProcessor to use to apply the matched
CorsConfiguration for a request.
By default an instance of DefaultCorsProcessor is used.
public CorsProcessor getCorsProcessor()
CorsProcessor.public void setOrder(int order)
The default value is Ordered.LOWEST_PRECEDENCE, meaning non-ordered.
Ordered.getOrder()public int getOrder()
OrderedHigher values are interpreted as lower priority. As a consequence,
the object with the lowest value has the highest priority (somewhat
analogous to Servlet load-on-startup values).
Same order values will result in arbitrary sort positions for the affected objects.
getOrder in interface OrderedOrdered.HIGHEST_PRECEDENCE,
Ordered.LOWEST_PRECEDENCEpublic void setBeanName(String name)
BeanNameAwareInvoked after population of normal bean properties but before an
init callback such as InitializingBean.afterPropertiesSet()
or a custom init-method.
setBeanName in interface BeanNameAwarename - the name of the bean in the factory.
Note that this name is the actual bean name used in the factory, which may
differ from the originally specified name: in particular for inner bean
names, the actual bean name might have been made unique through appending
"#..." suffixes. Use the BeanFactoryUtils.originalBeanName(String)
method to extract the original bean name (without suffix), if desired.protected String formatMappingName()
public reactor.core.publisher.Mono<Object> getHandler(ServerWebExchange exchange)
HandlerMappingBefore returning a handler, an implementing method should check for CORS configuration associated with the handler, apply validation checks based on it, and update the response accordingly. For pre-flight requests, the same should be done based on the handler matching to the expected actual request.
getHandler in interface HandlerMappingexchange - current server exchangeMono that emits one value or none in case the request
cannot be resolved to a handlerprotected abstract reactor.core.publisher.Mono<?> getHandlerInternal(ServerWebExchange exchange)
Mono
if no specific one is found. This method is called by getHandler(org.springframework.web.server.ServerWebExchange).
On CORS pre-flight requests this method should return a match not for the pre-flight request but for the expected actual request based on the URL path, the HTTP methods from the "Access-Control-Request-Method" header, and the headers from the "Access-Control-Request-Headers" header.
exchange - current exchangeMono for the matching handler, if anyprotected boolean hasCorsConfigurationSource(Object handler)
true if there is a CorsConfigurationSource for this handler.@Nullable protected CorsConfiguration getCorsConfiguration(Object handler, ServerWebExchange exchange)
handler - the handler to check (never null)exchange - the current exchangenull if none