6. Reactive Libraries

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

이전 글 : 5.4. MetadataExtractor