Class AbstractHandlerMapping

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

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

    • mappingsLogger

      protected final 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:
      • getPathPatternParser() -- the underlying pattern parser
      • PathPatternParser.setCaseSensitive(boolean) -- the case sensitive slash option, including its default value.

      Note: aside from

    • setUseTrailingSlashMatch

      @Deprecated(since="6.0") public void setUseTrailingSlashMatch(boolean trailingSlashMatch)
      Deprecated.
      as of 6.0, see PathPatternParser.setMatchOptionalTrailingSeparator(boolean)
      Shortcut method for setting the same property on the underlying pattern parser in use. For more details see:
      • getPathPatternParser() -- the underlying pattern parser
      • PathPatternParser.setMatchOptionalTrailingSeparator(boolean) -- the trailing slash option, including its default value.

      The default was changed in 6.0 from true to false in order to support the deprecation of the property.

    • getPathPatternParser

      public org.springframework.web.util.pattern.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,org.springframework.web.cors.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(org.springframework.web.cors.reactive.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(org.springframework.web.cors.reactive.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 org.springframework.web.cors.reactive.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:
      • Ordered.getOrder()
    • getOrder

      public int getOrder()
      Specified by:
      getOrder in interface org.springframework.core.Ordered
    • setBeanName

      public void setBeanName(String name)
      Specified by:
      setBeanName in interface org.springframework.beans.factory.BeanNameAware
    • formatMappingName

      protected String formatMappingName()
    • getHandler

      public reactor.core.publisher.Mono<Object> getHandler(org.springframework.web.server.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(org.springframework.web.server.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

      @Nullable protected org.springframework.web.cors.CorsConfiguration getCorsConfiguration(Object handler, org.springframework.web.server.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