WebFlux는 Spring Framework 5.0부터 추가된 새로운 웹 프레임워크로, Reactive Streams Specification을 기반으로 Reactive Programming을 지원합니다. Reactive Programming은 비동기, 논블로킹(non-blocking) 및 데이터 스트림을 처리하는 기술로, 대규모의 요청과 응답 처리를 위한 확장성이 높은 웹 어플리케이션을 만들 수 있습니다.
WebFlux는 두 가지 방식으로 웹 어플리케이션을 개발할 수 있습니다. 하나는 Annotation 기반의 방식으로, @Controller
, @RequestMapping
등의 애노테이션을 사용하여 컨트롤러를 작성하는 방식입니다. 또 다른 하나는 함수형 방식으로, Java 8의 Lambda 식을 사용하여 라우팅, 핸들러, 필터 등을 정의하는 방식입니다.
WebFlux는 Netty와 같은 Reactive Streams 기반의 서버를 사용하여, 비동기 및 논블로킹 방식으로 요청 및 응답을 처리합니다. 이를 통해, 높은 처리량과 낮은 지연 시간을 달성할 수 있습니다. 또한, WebFlux는 Spring MVC와 호환되어 기존의 Spring MVC 애플리케이션을 WebFlux로 쉽게 전환할 수 있습니다.
WebFlux에서는 Reactive Streams Specification을 따르는 Reactive API인 Flux
와 Mono
를 제공합니다. Flux
는 0개 이상의 데이터 스트림을 처리하고, Mono
는 0개 또는 1개의 데이터를 처리합니다. 이를 사용하여 비동기 및 논블로킹 방식으로 데이터를 처리할 수 있습니다.
WebFlux는 대용량 및 높은 처리량을 필요로 하는 웹 어플리케이션 개발에 적합한 프레임워크로, Reactive Programming을 지원하여 비동기 및 논블로킹 방식으로 데이터를 처리할 수 있습니다.