Лучший способ сделать это так:
public Mono<Void> signUp(Mono<Account> accountMono) {
//Account is a Jpa entity
return accountMono.flatMap(account -> {
accountService.signUp(account);
return Mono.empty();
});
}
Таким образом, вы следуете требованиям Reactive Streams и не мешаете потоку выполнения вашим кодом блокировки. Кроме того, в соответствии с требованиями Spring WebFlux вы не подписываетесь в своем собственном коде, но все задерживаете контейнер, который является инициатором этого Mono<Account>
. Фактическое выполнение произойдет, когда в контейнере Web (Reactive) будет достаточно ресурсов для подписки на возвращенный Mono
.