BACKEND/Spring
Spring WebFlux의 Programming Models
송이 🫧
2023. 2. 20. 14:22
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을 사용하게 되면 어노테이션에 작성하던 처리 방식을 내부 함수 체인에 위임함으로써 처음부터 끝까지 요청 처리를 담당한다. 이로써 사이드 이펙트를 줄일 수 있다는 장점이 있다.
참고