如何解决如何从Mono <User>获取User对象而不用Java阻止它?
我有一个存储库调用,它将给我Mono。
例如:
private User getUserData (User user)
{
Mono<User> monoUser=userRepository.insert(user);
User user= monoUser.block;
return user;
}
如何在不阻碍弹簧反应性的情况下实现这一目标。我不想做monoUser.block来获取User对象。
获取userObject之后,我需要通过Mapstruct将id转换为UserId。此外,我想实现这一目标而不会阻塞,以便使用响应式功能。
解决方法
使用Mono
可以执行许多操作,而不用调用block
,这些操作不会阻塞。您可以做的一件事是将Consumer
附加到Mono
的操作成功完成时调用。用于执行此操作的方法的签名(在Mono
上)是:
Mono<T> doOnSuccess(Consumer<? super T> onSuccess)
这样您就可以继续工作,并在操作完成后致电您的消费者。添加用户后,该调用将启动您想要执行的任何操作。
您将代码放入写入数据库的Consumer
中。如果该对象需要信息(例如要写入数据库的句柄),则可以在构造对象时将其传递给doOnSuccess
调用之前,将该信息传递给该对象。 -
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。