Spring WebFlux

seongmin·2023년 2월 27일
0

Spring WebFlux

목록 보기
5/5
post-thumbnail

Spring WebFlux

Spring WebFlux는 Spring 5부터 지원하는 리액티브 웹 애플리케이션을 위한 웹 프레임워크이다.

Spring WebFlux vs Spring MVC

  • Reactive Stack : Spring WebFlux

  • Servlet Stack : Spring MVC

Reactive StackServlet Stack
(1) Netty, Servlet 3.1+ ContainersServlet Containers
(2) Reactive Streams AdaptersServlet API
(3) Spring Security ReactiveSpring Security
(4) Spring WebFluxSpring MVC
Spring Data Reactive Repositories - Mongo, Cassandra, Redis, Couchbase, (5) R2DBCSpring Data Repositories - JDBC, JPA,NoSQL
  1. Spring WebFlux의 경우 Non-Blocking 통신을 지원하지만 Spring MVC의 경우 Non-Blocking이 아닌 Blocking 통신 방식을 사용한다.

  2. Spring WebFlux의 경우 Reactive Adapter를 사용해서 Reactor 뿐만 아니라 RxJava 등의 다른 리액티브 라이브러리를 사용할 수 있는 유연함을 제공하는 반면, Spring MVC의 경우 Servlet API의 스펙에 의존적이다.

  3. Spring WebFlux와 Spring MVC 모두 보안을 적용하기 위해서 Spring Security를 사용합니다. 다만, Spring WebFlux의 경우 서블릿 필터 방식이 아닌 WebFilter를 사용해 리액티브 특성에 맞게 인증과 권한 등의 보안을 적용한다.

  4. Reactive Stack의 경우, 웹 계층(프리젠테이션 계층, API 계층)에서는 Spring WebFlux를 사용하며 Servlet Stack의 경우, Spring MVC를 사용한다.

  5. Spring WebFlux의 경우 완전한 Non-Blocking 통신을 위해 리액티브 스택을 데이터 액세스 계층까지 확장한다.
    R2DBC(Reactive Relation Database Connectivity)는 관계형 데이터베이스에 Non-Blocking 통신을 적용하기 위한 표준 사양(Specification)이며, MySQL, Oracle 등의 데이터베이스 벤더에서는 R2DBC 사양에 맞는 드라이버를 구현해서 공급한다.


https://docs.spring.io/spring-framework/docs/5.2.5.RELEASE/spring-framework-reference/web-reactive.html#webflux-framework-choice

0개의 댓글