Spring Boot WebFlux는 비동기적으로 작동하는 웹 애플리케이션을 빌드하기 위한 Spring 프레임워크의 기능입니다. WebFlux는 Reactor 라이브러리를 기반으로 하며, Reactive Streams specification을 준수합니다.
WebFlux는 Spring MVC와 마찬가지로 요청-응답 모델을 사용하지만, 비동기적인 방식으로 처리합니다. 이는 Spring MVC에서는 스레드 풀을 사용하여 동시 요청을 처리하던 것과는 다르게, WebFlux에서는 단일 스레드에서 비동기 I/O 작업을 처리하고 이벤트 루프를 통해 다수의 요청을 처리할 수 있습니다.
WebFlux는 서버 측 렌더링, RESTful API, WebSocket, Server-Sent Events 등 다양한 웹 애플리케이션 유형에 대해 지원하며, Reactor의 Flux와 Mono를 통해 Reactive Programming을 지원합니다.
WebFlux는 기본적으로 Netty 서버를 사용합니다. 또한, Spring Boot 2.0 이후부터는 Spring MVC와 함께 사용할 수 있도록 WebFlux를 지원하는 Reactive WebClient를 제공합니다. 이를 통해 두 가지 프레임워크를 적절히 조합하여, 서로의 장점을 결합할 수 있습니다.
WebFlux를 사용하여 간단한 HTTP 요청-응답 처리를 하는 예제를 살펴보겠습니다.
먼저, @RestController 어노테이션을 사용하여 REST API를 정의합니다.
다음은 간단한 "Hello, World!" 메시지를 반환하는 예제입니다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
@RestController
public class HelloWorldController {
@GetMapping("/hello")
public Mono<String> helloWorld() {
return Mono.just("Hello, World!");
}
}
위의 예제에서 Mono는 Reactor 라이브러리의 클래스로, 단일 결과를 나타냅니다.
이 예제에서는 Mono를 사용하여 문자열 "Hello, World!"를 반환합니다.
다음으로, WebFluxConfigurer 인터페이스를 구현하여 WebFlux를 설정합니다.
이 예제에서는 addResourceHandlers 메서드를 사용하여 정적 자원을 제공합니다.
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.config.ResourceHandlerRegistry;
import org.springframework.web.reactive.config.WebFluxConfigurer;
@Configuration
public class WebConfig implements WebFluxConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
}
위의 예제에서는 클래스 패스의 /static 디렉토리에서 정적 자원을 찾도록 설정하였습니다.
마지막으로, SpringApplication 클래스를 사용하여 애플리케이션을 실행합니다.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
위의 예제에서는 @SpringBootApplication 어노테이션을 사용하여 Spring Boot 애플리케이션을 설정합니다. main 메서드에서는 SpringApplication.run 메서드를 호출하여 애플리케이션을 실행합니다.
이제 애플리케이션을 실행하고 http://localhost:8080/hello 주소로 HTTP 요청을 보내면 "Hello, World!" 메시지를 받을 수 있습니다.
'JAVA > Spring Boot' 카테고리의 다른 글
Spring Boot Tutorial - Spring Boot 소개와 환경 설정 (0) | 2023.04.12 |
---|