Class RouterFunctionMapping

All Implemented Interfaces:
Aware, BeanNameAware, InitializingBean, ApplicationContextAware, Ordered, HandlerMapping

public class RouterFunctionMapping extends AbstractHandlerMapping implements InitializingBean
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.0
Author:
Arjen Poutsma
  • 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

    • 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
    • setMessageReaders

      public void setMessageReaders(List<HttpMessageReader<?>> messageReaders)
      Configure HTTP message readers to de-serialize the request body with.

      By default this is set to the ServerCodecConfigurer's defaults.

    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Description copied from interface: InitializingBean
      Invoked by the containing BeanFactory after it has set all bean properties and satisfied BeanFactoryAware, 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 interface InitializingBean
      Throws:
      Exception - in the event of misconfiguration (such as failure to set an essential property) or if initialization fails for any other reason
    • initRouterFunctions

      protected void initRouterFunctions()
      Initialized the router functions by detecting them in the application context.
    • getHandlerInternal

      protected reactor.core.publisher.Mono<?> getHandlerInternal(ServerWebExchange exchange)
      Description copied from class: AbstractHandlerMapping
      Look up a handler for the given request, returning an empty Mono if no specific one is found. This method is called by AbstractHandlerMapping.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.

      Specified by:
      getHandlerInternal in class AbstractHandlerMapping
      Parameters:
      exchange - current exchange
      Returns:
      Mono for the matching handler, if any