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