Mono
1. Mono
- 기본적인 rx 연산자를 갖춘 Reactive Streams Publisher입니다.
- rx 연산자(Reactive Extensions 연산자)는 리액티브 프로그래밍에서 비동기 데이터 스트림을 생성, 변환, 결합, 필터링하는 데 사용되는 함수들을 말합니다.
- onNext 신호를 통해 최대 하나의 항목만 방출한 다음 onComplete 신호로 종료됩니다(값이 있거나 없는 성공적인 Mono)
- 또는 단일 onError 신호만 방출합니다(실패한 Mono).
- 대부분의 Mono 구현은 Subscriber#onNext(T)를 호출한 후 즉시 Subscriber.onComplete()를 호출할 것으로 예상됩니다.
- Mono.never()는 예외적인 경우로, 어떤 신호도 방출하지 않습니다.
- 이는 기술적으로 금지된 것은 아니지만 테스트 외에는 그다지 유용하지 않습니다.
- 반면, onNext와 onError의 조합은 명시적으로 금지되어 있습니다.
1.1 특징 요약
- 최대 하나의 항목: Mono는 최대 한 개의 항목만 방출할 수 있습니다.
- 종료 신호: 항목 방출 후에는 항상 onComplete 신호로 종료되거나, 오류 발생 시 onError 신호만 방출합니다.
- 동작 방식: 대부분의 Mono 구현은 onNext 호출 후 즉시 onComplete를 호출합니다.
- 예외 사례: Mono.never()는 어떤 신호도 방출하지 않는 특수 케이스입니다.
- 금지된 동작: onNext와 onError 신호의 조합은 명시적으로 금지되어 있습니다.
doOnError

public final <E extends java.lang.Throwable> Mono<T> doOnError(java.lang.Class<E> exceptionType,
java.util.function.Consumer<? super E> onError)
- 레퍼런스
- doOnError 메서드는 특정 타입의 예외가 발생했을 때 추가 동작을 수행할 수 있게 해주는 연산자입니다.