Spring Webflux 프로젝트를 진행하는데 코틀린만 쓰면 그게 바로 코프링 아니겠나! 싶었는데 아니었다.
보통 자바로 Webflux를 사용하면 리액티브 스트림을 써서 Mono나 Flux를 사용하게 되는데, 코루틴은 mono {}나 flux {}를 통해서 변환할 수 있었는데 아예 리액터를 안쓸 수 있었다… CoRouter DSL이 있는건 알았는데 뭔가 했더니 이거였다.
그래서 대충 보면서 리액터를 안쓰고 코루틴으로만 사용해봅시다.
- 보통 리액티브 스트림에서 사용하는 Mono는 단일 결과에 대해서 사용하는데, 얘는 그냥 susepdn fun 을 사용하면 된다.
- Flux는 Flow를 이용한다. Flow는 Flow 자체가 리액티브 스트림의 Publisher와 같은 애라서 suspend fun이 아니라 그냥 fun으로 작성한다.
- DB의 레포지토리를 작성할 때는 R2dbcRepository 대신 CoroutineCrudRepository를 쓰면 된다. 단일 반환이면 suspend fun (…) : T, 여러개 반환이면 fun (…): Flow<T> 로 하면 된다.
- router대신 coRouter를 쓴다. 원래 리액티브스트림을 사용하는 router의 경우 HandlerFunction<ServerResponse> 가 필요하지만, coRouter의 경우 핸들러는 suspend fun (ServerRequest) -> ServerResponse 로 작성하면 된다.
일단 알아본건 이정도고… 뭐가 하다가 특이한거 있으면 더 써봄…
답글 남기기