Programming Models
1. Annotated Controller
- Spring MVC에서 사용하던 방식을 WebFlux 에서 그대로 사용이 가능하다.
- @RequestMapping, @PathVariable, @RestController, @GetMapping 등
2. Functional Endpoints
- Java8의 lambda style routing과 handling 방식 (함수형 모델)
- RouterFunction: 어떤 핸들러가 요청을 처리할 지 결정
- HandlerFunction: 바인딩 부터 HTTP 요청 응답처리
- ServerRequest와 ServerResponse로 응답을 하며 서블릿 제약이 없고 리액티브 타입을 지원한다.
Spring WebFlux의 경우 다음과 같은 2개의 개발 방식을 지원한다.
익숙한 건 mvc에서 사용해왔던 어노테이션 방식이지만 함수형 프로그래밍에 맞는 router function을 사용하게 되면 어노테이션에 작성하던 처리 방식을 내부 함수 체인에 위임함으로써 처음부터 끝까지 요청 처리를 담당한다. 이로써 사이드 이펙트를 줄일 수 있다는 장점이 있다.
참고
'BACKEND > Spring' 카테고리의 다른 글
Spring Data 관련 클래스 정리 (2) | 2023.09.18 |
---|---|
Spring WebFlux 기반 MDC 적용하기 (+코루틴) (0) | 2023.08.12 |
Spring Actuator 사용해보기 (0) | 2023.01.31 |
Spring Securirty 6 이상 버전에서 h2-console 403 에러 나는 문제 (2) | 2023.01.23 |
Kotlin Kotest @beforeSpec @beforeContainer @beforeTest @beforeEach 차이 (2) | 2022.09.19 |