Объединение вызовов репозитория
Правильный способ объединения нескольких методов в цепочку вызывает реактивный, т.е. без блокировки.
Вот похожий вопрос.
Цепочка вызовов методов с использованием RxJava
/**
* Delete a user, including VerificationToken and PasswordResetToken if exist.
*
* @param user The user to delete.
* @return A void Mono.
*/
@Override
public Mono<Void> deleteUser(final User user) {
return tokenRepository.findByUser(user) //May return empty
.flatMap((VerificationToken t) -> {
return tokenRepository.delete(t); //Token exists, delete
})
.then(passwordTokenRepository.findByUser(user) //May return empty
.flatMap((PasswordResetToken t) -> {
return passwordTokenRepository.delete(t); //Token exists, delete
}))
.then(userRepository.delete(user)); //Must execute regardless
}
У меня есть несколько вызовов методов для трех разных ReactiveCrudRepositories, где первые два вызова просто проверяют существующие токены и могут вернуться с пустым Mono, если он не найден. Все методы должны завершиться, но удаление пользователя должно происходить всегда, независимо от того, находит ли какой-либо из первых двух вызовов токены.
Есть ли лучший способ сделать это или это правильно?