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.
Sub-classes 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