Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将三个操作与WebFlux相结合_Java_Spring Boot_Spring Webflux - Fatal编程技术网

Java 将三个操作与WebFlux相结合

Java 将三个操作与WebFlux相结合,java,spring-boot,spring-webflux,Java,Spring Boot,Spring Webflux,Сan不知道如何组合三个相互依赖的操作 我有一个新用户需要保存到库中: 从基中获取项 roleRepo.findByName(“用户”);//返回单声道 user.setRole(…);//来自roleRepo.findByName(“用户”)的集合结果是字符串 将第一次操作的数据保存到数据库中 userRepo.save(user); // return Mono<User> userRepo.save(用户);//返回单声道 保存到基本的新用户角色

Сan不知道如何组合三个相互依赖的操作

我有一个新用户需要保存到库中:

  • 从基中获取项

    roleRepo.findByName(“用户”);//返回单声道
    user.setRole(…);//来自roleRepo.findByName(“用户”)的集合结果是字符串
    
  • 将第一次操作的数据保存到数据库中

          userRepo.save(user); // return Mono<User>
    
    userRepo.save(用户);//返回单声道
    
  • 保存到基本的新用户角色

          UserRole uRole = new UserRole();
          urole.setUserId(user.getId); 
          urole.setRoleId(role.Id);  
          userRolesRepo.save(uRole) // return Mono<UserRole>
    
    UserRole uRole=newuserrole();
    urole.setUserId(user.getId);
    urole.setRoleId(role.Id);
    userRolesRepo.save(uRole)//返回Mono
    
  • 最后,方法返回

     Mono<User>
    
    Mono
    

    到控制器。

    使用flatmap组合异步操作。尽量像链条一样使用它们,避免嵌套

    未经测试,但这将为您提供一个启动:

    roleRepo.findByName(“用户”)
    .flatMap(角色->{
    user.setRole(角色);
    返回Mono.just(用户);
    })
    .flatMap(用户->用户repo.save(用户))
    .flatMap(用户->{
    UserRole uRole=新的UserRole();
    urole.setUserId(user.getId);
    urole.setRoleId(role.Id);
    返回Mono.zip(Mono.just(user)、userRolesRepo.save(uRole));
    })
    .flatMap(data->Mono.just(data.getT1());
    
     Mono<User>