链接存储库调用

时间:2019-10-15 09:44:36

标签: java reactive-programming crud spring-vault spring-reactive

链接几种方法的正确方法称为反应式,即无阻塞。

这是一个类似的问题。

Chaining method calls using 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。所有方法都应完成,但是无论前两个调用中的任何一个是否找到令牌,删除用户都必须始终执行。

是否有更好的方法来做到这一点?或者这是正确的吗?

0 个答案:

没有答案