withmarket-server/shop-review-reply

Spring Webflux에서 Functional Endpoint로 코드를 작성시 ExceptionHandler를 사용 불가능한 현상

BrianDYKim opened this issue · 1 comments

문제 상황

Spring Webflux를 Controller 패턴이 아닌 Functional Endpoint로 작성 시 발생하는 단점 중 하나로는, ControllerAdvice를 통한 ExceptionHandler를 사용 불가능한데에 있다. 이를 해결해보고자 한다.

시도해보았던 것

우선 이전에 Coroutines에서 제공하는 coroutineExceptionHandler를 이용해서 해결해보려고 하였다.
그러나 이걸로 해결이 안되는 이유는, 예외 처리가 발생하게되면 예외 처리의 주체는 coroutine이 아니기 때문이다. 예외 처리의 주체는 DispatcherServlet이며, 무조건 DispatcherServlet을 거쳐서 예외에 대한 response를 뱉게끔 만들 필요가 있다.

해결 방법(예정)

아래의 링크에 소개된 방법을 조금 커스터마이징하여 적용하면 괜찮을듯하다.
Spring Webflux ExceptionHandler Functional Endpoints - 홍아지
Spring Boot - 스프링 리액티브!

아는 분과 토론을 해본 결과, 해당 해결 방법이 정확히 맞으며, Reactor에서 발생하는 모든 exception은 따로 구현체를 만드는게 옳다고한다.