Class RouterFunctionMapping
- All Implemented Interfaces:
Aware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,Ordered
,ServletContextAware
,MatchableHandlerMapping
,HandlerMapping
HandlerMapping
implementation that supports RouterFunctions
.
If no RouterFunction
is provided at
construction time, this mapping
will detect all router functions in the application context, and consult them in
order.
- Since:
- 5.2
- Author:
- Arjen Poutsma, Sebastien Deleuze, Brian Clozel
-
Field Summary
Fields inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping
mappingsLogger
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
Fields inherited from interface org.springframework.web.servlet.HandlerMapping
BEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, LOOKUP_PATH, 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
ConstructorDescriptionCreate an emptyRouterFunctionMapping
.RouterFunctionMapping
(RouterFunction<?> routerFunction) Create aRouterFunctionMapping
with the givenRouterFunction
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.protected Object
getHandlerInternal
(HttpServletRequest servletRequest) Look up a handler for the given request, returningnull
if no specific one is found.Return the configuredRouterFunction
.match
(HttpServletRequest request, String pattern) Determine whether the request matches the given pattern.void
setDetectHandlerFunctionsInAncestorContexts
(boolean detectHandlerFunctionsInAncestorContexts) Set whether to detect handler functions in ancestor ApplicationContexts.void
setMessageConverters
(List<HttpMessageConverter<?>> messageConverters) Set the message body converters to use.void
setRouterFunction
(RouterFunction<?> routerFunction) Set the router function to map to.Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping
adaptInterceptor, detectMappedInterceptors, extendInterceptors, formatMappingName, getAdaptedInterceptors, getCorsConfiguration, getCorsConfigurationSource, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getPatternParser, getUrlPathHelper, hasCorsConfigurationSource, initApplicationContext, initInterceptors, initLookupPath, setAlwaysUseFullPath, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setPatternParser, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper, usesPathPatterns
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContext
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.web.servlet.HandlerMapping
getHandler, usesPathPatterns
Methods inherited from interface org.springframework.web.servlet.handler.MatchableHandlerMapping
getPatternParser
-
Constructor Details
-
RouterFunctionMapping
public RouterFunctionMapping()Create an emptyRouterFunctionMapping
.If this constructor is used, this mapping will detect all
RouterFunction
instances available in the application context. -
RouterFunctionMapping
Create aRouterFunctionMapping
with the givenRouterFunction
.If this constructor is used, no application context detection will occur.
- Parameters:
routerFunction
- the router function to use for mapping
-
-
Method Details
-
setRouterFunction
Set the router function to map to.If this property is used, no application context detection will occur.
-
getRouterFunction
Return the configuredRouterFunction
.Note: When router functions are detected from the ApplicationContext, this method may return
null
if invoked prior toafterPropertiesSet()
.- Returns:
- the router function or
null
-
setMessageConverters
Set the message body converters to use.These converters are used to convert from and to HTTP requests and responses.
-
setDetectHandlerFunctionsInAncestorContexts
public void setDetectHandlerFunctionsInAncestorContexts(boolean detectHandlerFunctionsInAncestorContexts) Set whether to detect handler functions in ancestor ApplicationContexts.Default is "false": Only handler functions in the current ApplicationContext will be detected, i.e. only in the context that this HandlerMapping itself is defined in (typically the current DispatcherServlet's context).
Switch this flag on to detect handler beans in ancestor contexts (typically the Spring root WebApplicationContext) as well.
-
afterPropertiesSet
Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- Throws:
Exception
- in the event of misconfiguration (such as failure to set an essential property) or if initialization fails for any other reason
-
getHandlerInternal
Description copied from class:AbstractHandlerMapping
Look up a handler for the given request, returningnull
if no specific one is found. This method is called byAbstractHandlerMapping.getHandler(jakarta.servlet.http.HttpServletRequest)
; anull
return value will lead to the default handler, if one is set.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 thus allowing the CORS configuration to be obtained via
AbstractHandlerMapping.getCorsConfiguration(Object, HttpServletRequest)
,Note: This method may also return a pre-built
HandlerExecutionChain
, combining a handler object with dynamically determined interceptors. Statically specified interceptors will get merged into such an existing chain.- Specified by:
getHandlerInternal
in classAbstractHandlerMapping
- Parameters:
servletRequest
- current HTTP request- Returns:
- the corresponding handler instance, or
null
if none found - Throws:
Exception
- if there is an internal error
-
match
Description copied from interface:MatchableHandlerMapping
Determine whether the request matches the given pattern. Use this method whenMatchableHandlerMapping.getPatternParser()
returnsnull
which means that theHandlerMapping
is using String pattern matching.- Specified by:
match
in interfaceMatchableHandlerMapping
- Parameters:
request
- the current requestpattern
- the pattern to match- Returns:
- the result from request matching, or
null
if none
-