Interface HandlerAdapter

All Known Implementing Classes:
HandlerFunctionAdapter, RequestMappingHandlerAdapter, SimpleHandlerAdapter, WebSocketHandlerAdapter

public interface HandlerAdapter
Contract to abstract the details of invoking a handler of a given type.

An implementation can also choose to be an instance of DispatchExceptionHandler if it wants to handle exceptions that occur before the request is successfully mapped to a handler. This allows a HandlerAdapter to expose the same exception handling both for handler invocation errors and for errors before a handler is selected. In Reactive Streams terms, handle(org.springframework.web.server.ServerWebExchange, java.lang.Object) handles the onNext signal, while DispatchExceptionHandler.handleError(org.springframework.web.server.ServerWebExchange, java.lang.Throwable) handles the onError signal from the dispatch processing chain.

Since:
5.0
Author:
Rossen Stoyanchev, Sebastien Deleuze
  • Method Summary

    Modifier and Type
    Method
    Description
    reactor.core.publisher.Mono<HandlerResult>
    handle(ServerWebExchange exchange, Object handler)
    Handle the request with the given handler, previously checked via supports(Object).
    boolean
    supports(Object handler)
    Whether this HandlerAdapter supports the given handler.
  • Method Details

    • supports

      boolean supports(Object handler)
      Whether this HandlerAdapter supports the given handler.
      Parameters:
      handler - the handler object to check
      Returns:
      whether the handler is supported
    • handle

      reactor.core.publisher.Mono<HandlerResult> handle(ServerWebExchange exchange, Object handler)
      Handle the request with the given handler, previously checked via supports(Object).

      Implementations should consider the following for exception handling:

      • Handle invocation exceptions within this method.
      • Set an exception handler on the returned HandlerResult to handle deferred exceptions from asynchronous return values, and to handle exceptions from response rendering.
      • Implement DispatchExceptionHandler to extend exception handling to exceptions that occur before a handler is selected.
      Parameters:
      exchange - current server exchange
      handler - the selected handler which must have been previously checked via supports(Object)
      Returns:
      Mono that emits a HandlerResult, or completes empty if the request is fully handled; any error signal would not be handled within the DispatcherHandler, and would instead be processed by the chain of registered WebExceptionHandlers at the end of the WebFilter chain