Spring Web Reactive | 6. Reactive Libraries
spring-webflux
는 reactor-core
에 의존하고, 그것을 내부적으로 사용하여 비동기 로직을 구성하고 Reactive Streams 지원을 제공한다. 일반적으로 WebFlux API는 Flux
, Mono
반환하고 (이들은 내부에서 사용되기 때문에) 입력으로 Reactive Streams Publisher
구현을 관용적으로 받을 수 있다. Flux
대 Mono
의 사용은 중요하다. 카디널리티 를 표현하는데 도움이 때문이다 - 예를 들어, 하나 또는 여러 개의 비동기 값이 예상되는지 여부, 그것은 결정을 위해 필수적이다(예를 들어, HTTP 메시지를 인코딩 또는 디코딩하는 경우).
어노테이션이 선언된 컨트롤러의 경우 WebFlux는 응용 프로그램에 의해 선택된 리액티브 라이브러리에 투명하게 적응한다. 이는 ReactiveAdapterRegistry
의 도움으로 이루어진다. ReactiveAdapterRegistry은 리액티브 라이브러리와 다른 비동기 플러그 가능한 지원을 제공한다. 레지스트리에는 RxJava 2/3, RxJava 1(RxJava Reactive Streams 브리지 공유) 및 CompletableFuture
의 지원이 포함되어 있지만, 다른 사용자도 등록할 수 있다.
Spring Framework 5.3 이상, RxJava 1 지원은 폐지되었다.
함수 API ( 함수 엔드 포인트, WebClient
등)의 경우, WebFlux API의 일반 규칙이 적용된다. 반환 값으로서 Flux
와 Mono
입력, Reactive Streams Publisher
. Publisher
가 사용자 정의 또는 다른 리액티브 라이브러리에서 제공되는 경우, 알 수 없는 시멘틱스 (0..N)를 가진 스트림으로으로만 다른 수 있다. 다만 시멘틱스를 알고 있는 경우는 Publisher
를 그대로 전달하는 대신에 Flux
나 Mono.from(Publisher)
로 래핑 할 수 있다.
예를 들어, Mono
가 아닌 Publisher
를 지정하면, Jackson JSON 메시지 라이터는 여러 값을 예상한다. 미디어 유형이 무한 스트림(application/json+stream
등)을 의미하는 경우, 값은 개별적으로 기록되고 플래시된다. 그렇지 않으면 값은 목록에 버퍼링된 JSON 배열로 렌더링된다.