首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Mono<T>中更新对象

如何在Mono<T>中更新对象
EN

Stack Overflow用户
提问于 2017-10-14 23:52:26
回答 1查看 985关注 0票数 2

我在一个处理程序中有下面的代码,在提取用户之后,我想用密码更新user对象,我该怎么做,比如下面的user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));

代码语言:javascript
运行
复制
  public Mono<ServerResponse> saveUser(ServerRequest request) 
 {
    Mono<User> user = request.bodyToMono(User.class);
    // How to Set the Password to user 
    **//user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));**

    return ServerResponse.ok().body(this.userRepository.insert(user), User.class);
}
EN

回答 1

Stack Overflow用户

发布于 2017-10-16 18:01:33

从理论上讲,您只需执行以下操作:

代码语言:javascript
运行
复制
public Mono<ServerResponse> saveUser(ServerRequest request) {
    Mono<User> user = request.bodyToMono(User.class)
        .map(user -> user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())));

    return ServerResponse.ok().body(this.userRepository.insert(user), User.class);
}

但这可以看作是一个特定的用例;出于安全原因,我认为密码编码器被设计为CPU密集型的,并且需要一些时间。不建议在web交换管道上执行昂贵的CPU操作,因为您的应用程序不会有很好的伸缩性:分配给处理请求的少数线程将忙于进行身份验证,而不是处理HTTP请求。

因此,在这种情况下,您可以在.map编码之前插入一个publishOn(Schedulers.elastic())操作符;这将在一个弹性调度器上调度这些CPU密集型操作(请参阅Reactor reference doc on Schedulers)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46746429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档