Этого можно достичь с помощью полезной вспомогательной библиотеки kotlinx-coroutines-reactor
, которая предоставляет полезные методы расширений для реакторов проекта Publisher
, помогающие конвертировать Mono
или Flux
в kotlin сопрограммы.
First добавить зависимость от
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
</dependency>
(если вы используете spring-boot, вам не нужно указывать версию, поскольку она управляет вами)
Теперь вы можете использовать kotlinx.coroutines.reactive.awaitFirstOrNull
для преобразования от Mono<Product>
до Product?
и «ждите» результата.
@RestController
class Controller(val productRepository: ProductsRepository) {
@GetMapping("/product")
suspend fun find(@RequestParam id: String): Product? {
return productRepository.findById(id).awaitFirstOrNull()
}
}