Spring WebFlux는 스프링 프레임워크의 일부로서, 비동기 및 반응형 프로그래밍을 지원하는 웹 애플리케이션 개발을 위한 모듈 중 하나입니다.
Spring WebFlux를 사용하면 높은 처리량과 확장성을 갖는 웹 애플리케이션을 구축할 수 있습니다. 아래는 Spring WebFlux와 관련된 중요한 용어와 개념입니다.
Reactive Programming은 데이터 스트림 및 이벤트 기반 프로그래밍을 위한 패러다임입니다. 스트림에서 발생하는 데이터를 비동기적으로 처리하고 변환하는 방식을 강조합니다.
Publisher는 Reactive Streams API에서 사용되는 인터페이스로, 데이터를 생성하고 전달하는 객체입니다. Mono와 Flux는 Publisher를 구현한 예시입니다.
Subscriber는 Publisher에서 생성된 데이터를 소비하는 객체입니다. Subscriber는 데이터를 요청하고 수신하며, 데이터가 사용 가능하면 해당 데이터를 처리합니다.
Mono는 Reactive Streams에서 사용되는 데이터 스트림의 일종으로, 0 또는 1개의 아이템을 발행합니다. 주로 비동기 작업의 결과를 처리할 때 사용됩니다.
Flux는 Reactive Streams에서 사용되는 데이터 스트림의 일종으로, 여러 개의 아이템을 발행할 수 있습니다. Flux는 데이터 스트림을 나타내며, 다수의 데이터 아이템을 처리할 때 유용합니다.
SubscriberContext는 Reactive Streams에서 컨텍스트 정보를 공유하는 데 사용되는 메커니즘입니다. 각 Subscriber는 자체 컨텍스트를 유지하며, 이 컨텍스트를 사용하여 데이터 처리나 로깅 등을 수행합니다.
Scheduler는 비동기 작업을 스케줄링하는 데 사용되는 도구로, 작업을 실행할 스레드 풀이나 실행 컨텍스트를 관리합니다. 스레드 풀을 관리하여 비동기 작업을 효율적으로 처리할 수 있습니다.
WebClient는 Spring WebFlux에서 제공하는 HTTP 클라이언트 라이브러리로, 비동기 방식으로 원격 서버와 통신할 때 사용됩니다.
Router Functions는 Spring WebFlux에서 요청을 처리하고 경로를 매핑하는 함수형 라우팅 방식입니다. 애플리케이션의 엔드포인트를 정의하고 라우팅 규칙을 설정하는 데 사용됩니다.
Handler Functions는 Router Functions와 함께 사용되며, 요청을 처리하고 응답을 생성하는 함수형 컨트롤러를 정의합니다.
Spring WebFlux에서도 기존의 Spring MVC와 유사한 방식으로 애노테이션을 사용하여 컨트롤러를 정의할 수 있습니다.
Hot Publisher는 데이터 스트림을 생성한 시점과 관계없이 데이터를 발행합니다. Cold Publisher는 구독자가 데이터를 요청할 때마다 새로운 데이터를 생성하거나 발행합니다.
Spring WebFlux는 비동기 및 반응형 웹 애플리케이션을 개발하는 데 사용되며, 이러한 개념과 용어를 이해하면 효과적으로 사용할 수 있습니다.