개발자는 기록이 답이다

패스트캠퍼스 환급챌린지 32일차 미션 (3월 3일) :  Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기 본문

패스트캠퍼스

패스트캠퍼스 환급챌린지 32일차 미션 (3월 3일) :  Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기

slow-walker 2024. 3. 3. 13:28

Spring WebFlux Handler Methods: 핸들러 메서드


Spring WebFlux에서 핸들러 메서드는 HTTP 요청을 처리하고 응답을 생성하는 핵심 역할을 수행합니다. 이러한 핸들러 메서드를 어떻게 작성하고 활용하는지에 대한 내용을 살펴보겠습니다.

1. 핸들러 메서드의 기본 구조
Spring WebFlux의 핸들러 메서드는 주로 리액티브 프로그래밍에 기반하여 비동기적으로 동작합니다. 기본적으로는 Mono 또는 Flux와 같은 리액티브 타입을 반환하도록 설계되어 있습니다.

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

@RestController
public class MyController {

    @GetMapping("/api/greet/{name}")
    public Mono<String> greet(@PathVariable String name) {
        return Mono.just("Hello, " + name + "!");
    }
}

위의 코드에서 greet 메서드는 /api/greet/{name} 경로로 들어오는 GET 요청을 처리합니다. Mono.just를 사용하여 간단한 응답을 생성하고 있습니다.

2. 핸들러 메서드의 주요 특징
리액티브 타입 반환: 핸들러 메서드는 주로 Mono나 Flux와 같은 리액티브 타입을 반환합니다. 이는 비동기 및 리액티브한 특성을 지원합니다.

어노테이션 기반 매핑: @GetMapping, @PostMapping 등과 같은 어노테이션을 사용하여 요청 경로와 메서드를 매핑합니다.

비동기 처리: 핸들러 메서드는 비동기적으로 동작하므로 블로킹되지 않고 다수의 요청을 효율적으로 처리할 수 있습니다.

3. 핸들러 메서드 작성 팁
비즈니스 로직 분리: 핸들러 메서드에서는 주로 비즈니스 로직을 수행하거나 서비스 메서드를 호출합니다. 이때 비즈니스 로직은 별도의 서비스 클래스에 분리하여 유지보수성을 높입니다.

예외 처리: 예외 처리는 핸들러 메서드에서 중요한 부분입니다. @ExceptionHandler를 사용하여 특정 예외에 대한 처리 로직을 작성하고, 전역 예외 처리를 위한 @ControllerAdvice를 활용할 수 있습니다.

요청 및 응답 변환: 핸들러 메서드에서는 요청 파라미터를 받거나, 응답을 생성할 때 변환 작업을 수행해야 합니다. 이때 @RequestBody, @RequestParam 등을 사용하여 데이터 변환을 수행합니다.

 

 

Method Arguments

• Servlet stackController method argument와 거의 비
하지만 servlet stack에서 제공되지 않고 reactive stack에서만 제공되거나 할을 하지만 다객체들이 제공

 

ServerWebExchange : method argumentServerWebExchange 가능

 

ServerHttpRequest/Response : method argumentServerHttpRequest, ServerHttpResponse 가능

 


※ 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/48sS29N