Class AbstractHandlerMapping

java.lang.Object
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.reactive.handler.AbstractHandlerMapping
All Implemented Interfaces:
Aware, BeanNameAware, ApplicationContextAware, Ordered, HandlerMapping
Direct Known Subclasses:
AbstractHandlerMethodMapping, AbstractUrlHandlerMapping, RouterFunctionMapping

public abstract class AbstractHandlerMapping extends ApplicationObjectSupport implements HandlerMapping, Ordered, BeanNameAware
Abstract base class for HandlerMapping implementations.
Since:
5.0
Author:
Rossen Stoyanchev, Juergen Hoeller, Brian Clozel
  • Field Details

    • mappingsLogger

      protected final org.apache.commons.logging.Log mappingsLogger
      Dedicated "hidden" logger for request mappings.
  • Constructor Details

    • AbstractHandlerMapping

      public AbstractHandlerMapping()
  • Method Details

    • setUseCaseSensitiveMatch

      public void setUseCaseSensitiveMatch(boolean caseSensitiveMatch)
      Shortcut method for setting the same property on the underlying pattern parser in use. For more details see:

      Note: aside from

    • getPathPatternParser

      public PathPatternParser getPathPatternParser()
      Return the PathPatternParser instance that is used for CORS configuration checks. Subclasses can also use this pattern parser for their own request mapping purposes.
    • setCorsConfigurations

      public void setCorsConfigurations(Map<String,CorsConfiguration> corsConfigurations)
      Set the "global" CORS configurations based on URL patterns. By default, the first matching URL pattern is combined with handler-level CORS configuration if any.
      See Also:
    • setCorsConfigurationSource

      public void setCorsConfigurationSource(CorsConfigurationSource corsConfigurationSource)
      Set the "global" CORS configuration source. By default, the first matching URL pattern is combined with the CORS configuration for the handler, if any.
      Since:
      5.1
      See Also:
    • setCorsProcessor

      public void setCorsProcessor(CorsProcessor corsProcessor)
      Configure a custom CorsProcessor to use to apply the matched CorsConfiguration for a request.

      By default an instance of DefaultCorsProcessor is used.

    • getCorsProcessor

      public CorsProcessor getCorsProcessor()
      Return the configured CorsProcessor.
    • setOrder

      public void setOrder(int order)
      Specify the order value for this HandlerMapping bean.

      The default value is Ordered.LOWEST_PRECEDENCE, meaning non-ordered.

      See Also:
    • getOrder

      public int getOrder()
      Description copied from interface: Ordered
      Get the order value of this object.

      Higher 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.

      Specified by:
      getOrder in interface Ordered
      Returns:
      the order value
      See Also:
    • setBeanName

      public void setBeanName(String name)
      Description copied from interface: BeanNameAware
      Set the name of the bean in the bean factory that created this bean.

      Invoked after population of normal bean properties but before an init callback such as InitializingBean.afterPropertiesSet() or a custom init-method.

      Specified by:
      setBeanName in interface BeanNameAware
      Parameters:
      name - 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.
    • formatMappingName

      protected String formatMappingName()
    • getHandler

      public reactor.core.publisher.Mono<Object> getHandler(ServerWebExchange exchange)
      Description copied from interface: HandlerMapping
      Return a handler for this request.

      Before 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.

      Specified by:
      getHandler in interface HandlerMapping
      Parameters:
      exchange - current server exchange
      Returns:
      a Mono that emits one value or none in case the request cannot be resolved to a handler
    • getHandlerInternal

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

      Parameters:
      exchange - current exchange
      Returns:
      Mono for the matching handler, if any
    • hasCorsConfigurationSource

      protected boolean hasCorsConfigurationSource(Object handler)
      Return true if there is a CorsConfigurationSource for this handler.
      Since:
      5.2
    • getCorsConfiguration

      protected @Nullable CorsConfiguration getCorsConfiguration(Object handler, ServerWebExchange exchange)
      Retrieve the CORS configuration for the given handler.
      Parameters:
      handler - the handler to check (never null)
      exchange - the current exchange
      Returns:
      the CORS configuration for the handler, or null if none