Webflux는 Reactive Programming을 지원하는 Spring 5의 일부분이다.
Webflux는 전체적으로 Reactor 프로젝트를 사용한다.
-
어노테이션 컨트롤러
어노테이션 기반 프로그래밍에서는 MVC와 동일한 어노테이션을 사용한다.
Servlets, ServletContext과 같이 동기적인 자바이다.
기존의
@Controller
나@RestController
는 여러가지 부수 효과를 동반하게 된다.@Valid
나@RequestMapping
등이 존재한다. -
함수형 엔드포인트
자바의 람다형 프로그래밍을 사용한 엔드포인트를 이용해서 함수형 프로그래밍 모델을 따르며, 가볍다
함수형 엔드포인트는 요청의 처리를 처음부터 끝까지 담당한다.
부수 효과가 존재하지 않으며,
router -> handler
와 같은 형태의 함수 체인형태로 사용하게 된다.반면에 함수형 엔드포인트는 비동기 자바인 Netty와 Netty의 Channel Model에서 비롯된 Reactive 적인 접근 방법에서 영감 받은 방법이다.
따라서 ServletRequest, ServletResponse, WebFilter와 같이 Reactive 환경을 위한 새로운 API들이 등장했다.
따라서 Reactive Programming에 적합하다.
implementation 'org.springframework.boot:spring-boot-starter-webflux'
testImplementation 'io.projectreactor:reactor-test'
기본적인 webflux를 위한 의존성들이다.