Spring Web Reactive | 6. Reactive Libraries

spring-webfluxreactor-core에 의존하고, 그것을 내부적으로 사용하여 비동기 로직을 구성하고 Reactive Streams 지원을 제공한다. 일반적으로 WebFlux API는 Flux, Mono 반환하고 (이들은 내부에서 사용되기 때문에) 입력으로 Reactive Streams Publisher 구현을 관용적으로 받을 수 있다. FluxMono의 사용은 중요하다. 카디널리티 를 표현하는데 도움이 때문이다 - 예를 들어, 하나 또는 여러 개의 비동기 값이 예상되는지 여부, 그것은 결정을 위해 필수적이다(예를 들어, HTTP 메시지를 인코딩 또는 디코딩하는 경우).

어노테이션이 선언된 컨트롤러의 경우 WebFlux는 응용 프로그램에 의해 선택된 리액티브 라이브러리에 투명하게 적응한다. 이는 ReactiveAdapterRegistry의 도움으로 이루어진다. ReactiveAdapterRegistry은 리액티브 라이브러리와 다른 비동기 플러그 가능한 지원을 제공한다. 레지스트리에는 RxJava 2/3, RxJava 1(RxJava Reactive Streams 브리지 공유) 및 CompletableFuture의 지원이 포함되어 있지만, 다른 사용자도 등록할 수 있다.

Spring Framework 5.3 이상, RxJava 1 지원은 폐지되었다.

함수 API ( 함수 엔드 포인트, WebClient 등)의 경우, WebFlux API의 일반 규칙이 적용된다. 반환 값으로서 FluxMono입력, Reactive Streams Publisher. Publisher가 사용자 정의 또는 다른 리액티브 라이브러리에서 제공되는 경우, 알 수 없는 시멘틱스 (0..N)를 가진 스트림으로으로만 다른 수 있다. 다만 시멘틱스를 알고 있는 경우는 Publisher를 그대로 전달하는 대신에 FluxMono.from(Publisher)로 래핑 할 수 있다.

예를 들어, Mono가 아닌 Publisher를 지정하면, Jackson JSON 메시지 라이터는 여러 값을 예상한다. 미디어 유형이 무한 스트림(application/json+stream등)을 의미하는 경우, 값은 개별적으로 기록되고 플래시된다. 그렇지 않으면 값은 목록에 버퍼링된 JSON 배열로 렌더링된다.

최종 수정 : 2021-04-12