Spring Webclientの同期呼び出しを使用して例外を処理する方法は?

2020-02-26 java spring exception spring-webflux

API呼び出しを行うためのサービスクラスを作成しました。

ServiceA {
  public B sendReceive(Request req) {
    return Optional.of(req).map(this::transform).map(apiService::call);
  }
  private ApiRequest transform(Request req) {
    ...
  }
}

ApiService {
  public B call(ApiRequest req) {
    return webClient.post().bodyValue(req).bodyToMono().block();
  }

@ControllerAdvice
ExceptionManager {
  @ExceptionHandler(Exception.class)
  public ResponseEntity handle(Exception ex) {
    ...
  }
}

ControllerAdviceクラスをテストするために、 transformメソッドで例外を生成しようとしましたが、機能しません。例外は、リアクティブパッケージ内にあるExceptionManagerクラスではなく、 InvocableHandlerMethodクラスに直接送られます。

私はMono / Fluxを使用していないため、通常の.onErrorは私のケースでは機能しません。

ControllerAdviceを機能させるにはどうすればよいですか?または、ブロッキング呼び出しで例外をどのように処理する必要がありますか?

Answers

Related