Spring, Java 🌵

WebFlux 개념 (알아보기)

MAYMIN 2024. 6. 16. 16:13
728x90
SMALL

WebFlux ?

Spring Framework의 일부로, 비동기적이고 논블로킹(non-blocking) 방식의 웹 애플리케이션을 개발할 수 있게 해줌

  • 비동기(Asynchronous) : 어떤 작업을 요청한 후 그 작업이 끝날 때까지 기다리지않고, 다른 작업을 계속 할 수 있는 방식
  • 논블로킹(Non-blocking) : 어떤 작업이 진행되는 동안 다른 작업이 막히지 않고 동시에 진행될 수 있는 방식

 

 

사용 예시

1. 의존성 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

2. 컨트롤러 작성

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public Mono<String> sayHello() {
        return Mono.just("Hello, WebFlux!");
    }
}
  • Mono: 단일 값을 비동기적으로 반환할 때 사용
  • Flux: 여러 값을 비동기적으로 스트리밍할 때 사용

 

특징

  • 비동기 non-blocking 처리
  • 최소 쓰레드로 최대 성능 - 쓰레드 컨텍스트 스위칭 비용 효율화
  • 함수형 스타일로 개발 - 동시 처리 코드 효율화
  • 서블릿 기술 사용 X

단점

  • RDB 지원 부족 ( ㅠ.. 매우 치명적)
  • 난이도 높음
  • 실무에서 많이 안 씀 (전체 1% 이하 - 거의 안쓴다고 보면 될 듯)
728x90
LIST