Spring WebFlux
: 반응형(리액티브) 웹 앱을 구현하기 위한 기술
: Flux를 Web(네트워크)을 통해 한다고 볼 수도 있음
: Reactive Streams (spec)인 인터페이스를 기반으로 동작
: Reactor를 포함한 Reactive Streams 구현체면 이용 쌉가능 (Reactive Adapter, Reactive AdapterRegistry 등)
Sprig WebFlux 와 Spring MVC 기술 스택 비교
MVC와 WebFlux 사양 비교
MVC | WebFlux | |
요청/응답 방식 | 동기 : 호출과 동시에 응답이 이루어짐 |
비동기 : 호출과 동시에 응답이 이루어지지 않음 |
데이터 처리방식 | 블로킹 방식 : 함수가 종료되야 다음줄 실행 |
논블로킹 방식 : 앞에거 처리할동안 뒤에거도 실행 |
프로그래밍 | 명령형 프로그래밍 *작성과 디버깅이 용이 |
반응형 프로그래밍, 선언형 프로그래밍 |
스레드 | 요청을 큐에 쌓아놓고 처리 *따라서 스레드 풀을 미리 생성해서 처리 |
이벤트 루프가 계속 돌면서 처리 *트래픽에 따라 스레드풀이 증감함 |
단점 | 트래픽이 많아지면 ThreadPoolHell 발생 | 한 곳이라도 막히면 ThreadPoolHell 발생 |
지원 스펙 | JDBC, JPA | Reactor, RxJava 등 |
공통점 | @Controller Reactive Client 실행 가능한 서버 : Tomcat, Jetty, Unvertow 등 |
|
비 유 | ![]() 올림픽 : 쏘고 -> 점수 |
![]() 건카타 : 실전 |
공식 문서 기술 스택 비교

* 공식 문서 : https://spring.io/reactive
MVC와 WebFlux 공통점과 차이점 다이어그램
* 참고링크 : https://pearlluck.tistory.com/726
MVC의 Blocking 처리방식과 WebFlux의 Blocking 처리방식 비교 예제
: 모듈 생성 방식이 아닌, SpringBoot Initializer를 통한 프로젝트 생성 방식으로 작성함
: 반드시 애플리케이션 실행은 '외부 => main' 순서로 실행
Git Clone 레퍼런스 : https://github.com/PNUHCT/MVC_WebFlux_Blocking.git
1. Local 브랜치가 main(내부), Out 브랜치가 OutBound(외부)
2. WebLocal 브랜치가 main(내부), WebOut 브랜치가 OutBound(외부)
직접 작성 방법
1. SpringBoot에서 main과 outbound 프로젝트를 두 개 생성해서 IntelliJ로 각각 오픈
1) MVC 방식은 프로젝트 생성시, web과 lombok 확장을 추가했음
2) WebFlux 방식은 프로젝트 생성시, web과 lombok과 webflux 확장을 추가했음
2. 각각 코드 작성 (상단의 git 링크 참고)
주의할 점
1. MVC 방식 : 메인은 8080(default), out은 7070 포트 지정함
2. WebFlux 방식 : 메인은 5050, out은 6060 포트 지정함
'Codestates [Back-end] > 데일리 로그 [TIL]' 카테고리의 다른 글
22.10.29 기술 면접 준비 (0) | 2022.10.19 |
---|---|
22.10.17 SpringBoot - JRE를 이용한 WAR 실행 파일 빌드 및 실행 (0) | 2022.10.17 |
22.10.13 Spring WebFlux - Operators (2) | 2022.10.13 |
22.10.12 Spring WebFlux - 스케줄러 (0) | 2022.10.13 |
22.10.12 Spring Webflux - ProjectReactor / 마블 다이어그램 (0) | 2022.10.12 |