[Spring WebFlux] Spring WebFlux

see1237·2022년 10월 14일
0

Section4

목록 보기
11/13

Spring WebFlux란?

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

Spring WebFlux와 Spring MVC 비교

  • Spring WebFlux와 Spring MVC 기술 스택 비교
Spring WebFluxSpring MVC
Non-Blocking 통신 지원 (Netty, Servlet 3.1+ Containers)Blocking 통신 (Servlet Containers)
Reactive Adapter를 사용해서 Reactor 뿐만 아니라 RxJava 등의 다른 리액티브 라이브러리를 사용할 수 있는 유연함을 제공Servlet API의 스펙에 의존적
Spring Security 사용하지만 서블릿 필터 방식이 아닌 WebFilter를 사용해 리액티브 특성에 맞게 인증과 권한 등의 보안을 적용Spring Security 사용
Reactive Stack의 경우, 웹 계층(프리젠테이션 계층, API 계층)에서는 Spring WebFlux를 사용Servlet Stack의 경우, Spring MVC를 사용
완전한 Non-Blocking 통신을 위해 리액티브 스택을 데이터 액세스 계층까지 확장한다. R2DBC(Reactive Relation Database Connectivity)는 관계형 데이터베이스에 Non-Blocking 통신을 적용하기 위한 표준 사양(Specification)이며, MySQL, Oracle 등의 데이터베이스 벤더에서는 R2DBC 사양에 맞는 드라이버를 구현해서 공급Spring MVC에서 사용하는 JDBC API의 경우 Non-Blocking 통신을 지원하지 않는다.

  • Spring WebFlux는 Spring MVC 방식의 @Controller, @RestController, @RequestMapping 등과 같은 애너테이션을 동일하게 지원한다.
  • Spring WebFlux는 1차로 요청을 수신한 애플리케이션에서 외부 애플리케이션에 요청을 추가적으로 전달할 때 1차로 요청을 수신한 애플리케이션의 요청 처리 쓰레드가 Blocking 되지 않는다.

Spring WebFlux 기반의 리액티브 애플리케이션 구현 실습 체크포인트

  • Spring 리액티브 스택의 경우, H2 웹 콘솔을 정상적으로 지원하지 않는다.
  • Spring Data R2DBC는 Auto DDL 기능을 제공하지 않기 때문에 직접 SQL 스크립트 설정을 추가해야 한다.
  • R2DBC의 Reposiroty를 사용하기 위해서 @EnableR2dbcRepositories,@EnableR2dbcAuditing 애너테이션을 사용한다.
  • Spring WebFlux 기반 클래스는 Mono와 같이 Mono로 래핑한 값을 리턴한다.
  • Spring WebFlux에서는 모든 데이터가 Mono나 Flux로 래핑되어 전달된다.

0개의 댓글