Package org.springframework.web.servlet.function.support

# Class RouterFunctionMapping

java.lang.Object
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.context.support.WebApplicationObjectSupport
org.springframework.web.servlet.handler.AbstractHandlerMapping
org.springframework.web.servlet.function.support.RouterFunctionMapping

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.beans.factory.InitializingBean`, `org.springframework.context.ApplicationContextAware`, `org.springframework.core.Ordered`, `org.springframework.web.context.ServletContextAware`, `MatchableHandlerMapping`, `HandlerMapping`

public class RouterFunctionMapping extends AbstractHandlerMapping implements org.springframework.beans.factory.InitializingBean, MatchableHandlerMapping
`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

Constructors
Constructor
Description
`RouterFunctionMapping()`
Create an empty `RouterFunctionMapping`.
`RouterFunctionMapping(RouterFunction<?> routerFunction)`
Create a `RouterFunctionMapping` with the given `RouterFunction`.

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
`protected Object`
`getHandlerInternal(HttpServletRequest servletRequest)`
Look up a handler for the given request, returning `null` if no specific one is found.
`RouterFunction<?>`
`getRouterFunction()`
Return the configured `RouterFunction`.
`RequestMatchResult`
`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<org.springframework.http.converter.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 empty `RouterFunctionMapping`.

If this constructor is used, this mapping will detect all `RouterFunction` instances available in the application context.

### RouterFunctionMapping

public RouterFunctionMapping(RouterFunction<?> routerFunction)
Create a `RouterFunctionMapping` with the given `RouterFunction`.

If this constructor is used, no application context detection will occur.

Parameters:
  `routerFunction` - the router function to use for mapping

## Method Details

### setRouterFunction

public void setRouterFunction(@Nullable RouterFunction<?> routerFunction)
Set the router function to map to.

If this property is used, no application context detection will occur.

### getRouterFunction

@Nullable public RouterFunction<?> getRouterFunction()
Return the configured `RouterFunction`.

Note: When router functions are detected from the ApplicationContext, this method may return `null` if invoked prior to `afterPropertiesSet()`.

Returns:
  the router function or `null`

### setMessageConverters

public void setMessageConverters(List<org.springframework.http.converter.HttpMessageConverter<?>> messageConverters)
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

public void afterPropertiesSet()

Specified by:
  `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`

### getHandlerInternal

@Nullable protected Object getHandlerInternal(HttpServletRequest servletRequest) throws Exception
Description copied from class: `AbstractHandlerMapping`
Look up a handler for the given request, returning `null` if no specific one is found. This method is called by `AbstractHandlerMapping.getHandler(jakarta.servlet.http.HttpServletRequest)`; a `null` 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 class `AbstractHandlerMapping`
Parameters:
  `servletRequest` - current HTTP request
Returns:
  the corresponding handler instance, or `null` if none found
Throws:
  `Exception` - if there is an internal error

### match

@Nullable public RequestMatchResult match(HttpServletRequest request, String pattern)
Description copied from interface: `MatchableHandlerMapping`
Determine whether the request matches the given pattern. Use this method when `MatchableHandlerMapping.getPatternParser()` returns `null` which means that the `HandlerMapping` is using String pattern matching.

Specified by:
  `match` in interface `MatchableHandlerMapping`
Parameters:
  `request` - the current request
  `pattern` - the pattern to match
Returns:
  the result from request matching, or `null` if none