Spring Webflux 프로젝트를 진행하는데 코틀린만 쓰면 그게 바로 코프링 아니겠나! 싶었는데 아니었다.

보통 자바로 Webflux를 사용하면 리액티브 스트림을 써서 Mono나 Flux를 사용하게 되는데, 코루틴은 mono {}나 flux {}를 통해서 변환할 수 있었는데 아예 리액터를 안쓸 수 있었다… CoRouter DSL이 있는건 알았는데 뭔가 했더니 이거였다.

그래서 대충 보면서 리액터를 안쓰고 코루틴으로만 사용해봅시다.

  1. 보통 리액티브 스트림에서 사용하는 Mono는 단일 결과에 대해서 사용하는데, 얘는 그냥 susepdn fun 을 사용하면 된다.
  2. Flux는 Flow를 이용한다. Flow는 Flow 자체가 리액티브 스트림의 Publisher와 같은 애라서 suspend fun이 아니라 그냥 fun으로 작성한다.
  3. DB의 레포지토리를 작성할 때는 R2dbcRepository 대신 CoroutineCrudRepository를 쓰면 된다. 단일 반환이면 suspend fun (…) : T, 여러개 반환이면 fun (…): Flow<T> 로 하면 된다.
  4. router대신 coRouter를 쓴다. 원래 리액티브스트림을 사용하는 router의 경우 HandlerFunction<ServerResponse> 가 필요하지만, coRouter의 경우 핸들러는 suspend fun (ServerRequest) -> ServerResponse 로 작성하면 된다.

일단 알아본건 이정도고… 뭐가 하다가 특이한거 있으면 더 써봄…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다