public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping
HandlerMapping
implementations.
Supports direct matches, e.g. a registered "/test" matches "/test", and
various Ant-style pattern matches, e.g. a registered "/t*" pattern matches
both "/test" and "/team", "/test/*" matches all paths under "/test",
"/test/**" matches all paths below "/test". For details, see the
AntPathMatcher
javadoc.
Will search all path patterns to find the most exact match for the current request path. The most exact match is defined as the longest path pattern that matches the current request path.
logger
BEST_MATCHING_PATTERN_ATTRIBUTE, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
AbstractUrlHandlerMapping() |
Modifier and Type | Method and Description |
---|---|
reactor.core.publisher.Mono<Object> |
getHandler(ServerWebExchange exchange)
Return a handler for this request.
|
Map<String,Object> |
getHandlerMap()
Return the registered handlers as an unmodifiable Map, with the registered path
as key and the handler object (or handler bean name in case of a lazy-init handler)
as value.
|
protected Object |
lookupHandler(String urlPath,
ServerWebExchange exchange)
Look up a handler instance for the given URL path.
|
protected void |
registerHandler(String[] urlPaths,
String beanName)
Register the specified handler for the given URL paths.
|
protected void |
registerHandler(String urlPath,
Object handler)
Register the specified handler for the given URL path.
|
void |
setLazyInitHandlers(boolean lazyInitHandlers)
Set whether to lazily initialize handlers.
|
void |
setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
Whether to match to URLs irrespective of the presence of a trailing slash.
|
boolean |
useTrailingSlashMatch()
Whether to match to URLs irrespective of the presence of a trailing slash.
|
protected void |
validateHandler(Object handler,
ServerWebExchange exchange)
Validate the given handler against the current request.
|
getOrder, getPathHelper, getPathMatcher, setOrder, setPathHelper, setPathMatcher, setUrlDecode
getApplicationContext, getMessageSourceAccessor, initApplicationContext, initApplicationContext, isContextRequired, requiredContextClass, setApplicationContext
public void setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
The default value is false
.
public boolean useTrailingSlashMatch()
public void setLazyInitHandlers(boolean lazyInitHandlers)
If you want to allow your controllers to be lazily initialized, make them "lazy-init" and set this flag to true. Just making them "lazy-init" will not work, as they are initialized through the references from the handler mapping in this case.
public final Map<String,Object> getHandlerMap()
public reactor.core.publisher.Mono<Object> getHandler(ServerWebExchange exchange)
HandlerMapping
exchange
- current server exchangeMono
that emits one value or none in case the request
cannot be resolved to a handlerprotected Object lookupHandler(String urlPath, ServerWebExchange exchange) throws Exception
Supports direct matches, e.g. a registered "/test" matches "/test", and various Ant-style pattern matches, e.g. a registered "/t*" matches both "/test" and "/team". For details, see the AntPathMatcher class.
Looks for the most exact pattern, where most exact is defined as the longest path pattern.
urlPath
- URL the bean is mapped toexchange
- the current exchangenull
if not foundException
AntPathMatcher
protected void validateHandler(Object handler, ServerWebExchange exchange) throws Exception
The default implementation is empty. Can be overridden in subclasses, for example to enforce specific preconditions expressed in URL mappings.
handler
- the handler object to validateexchange
- current exchangeException
- if validation failedprotected void registerHandler(String[] urlPaths, String beanName) throws BeansException, IllegalStateException
urlPaths
- the URLs that the bean should be mapped tobeanName
- the name of the handler beanBeansException
- if the handler couldn't be registeredIllegalStateException
- if there is a conflicting handler registeredprotected void registerHandler(String urlPath, Object handler) throws BeansException, IllegalStateException
urlPath
- the URL the bean should be mapped tohandler
- the handler instance or handler bean name String
(a bean name will automatically be resolved into the corresponding handler bean)BeansException
- if the handler couldn't be registeredIllegalStateException
- if there is a conflicting handler registered