Java Spring5WebFlux,如何返回自定义json数据?

Java Spring5WebFlux,如何返回自定义json数据?,java,spring,spring-mvc,spring-boot,spring-webflux,Java,Spring,Spring Mvc,Spring Boot,Spring Webflux,当我不使用webflux时,我的代码 1.public Map<String, Object> registerService(User user) { Map<String, Object> map = new HashMap<>(8); map.put("status":1); userRepository.save(user); return map; 2.public Mono<Map<String, Ob

当我不使用webflux时,我的代码

1.public Map<String, Object> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status":1);
    userRepository.save(user);
    return map;
2.public Mono<Map<String, Object>> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status", 1);
    userRepository.save(user);
    return Mono.just(map);
}
1.公共地图注册服务(用户){
Map Map=新的HashMap(8);
地图放置(“状态”:1);
userRepository.save(用户);
返回图;
当我使用webflux时,我的代码

1.public Map<String, Object> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status":1);
    userRepository.save(user);
    return map;
2.public Mono<Map<String, Object>> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status", 1);
    userRepository.save(user);
    return Mono.just(map);
}
2.public Mono registerService(用户){
Map Map=新的HashMap(8);
地图放置(“状态”,1);
userRepository.save(用户);
返回Mono.just(map);
}
响应为“{”status:1}”,但用户不插入mongo

在webflux中,我无法获得与1.response相同的响应,那么如何实现呢?
我不想返回用户,只需返回自定义映射,并将用户插入mongodb中即可。您必须订阅Mono,
userRepository.save(obj).subscribe()

假设您的用户存储库返回类型也是Mono,并且您希望返回自定义映射,您可以这样做

public Mono<Map<String, Object>> registerService(User user) {
    return userRepository.save(user)
        .map(__ -> {
            Map<String, Object> map = new HashMap<>();
            map.put("status", 1);
            return map;
        });
}
公共单声道注册服务(用户){
返回userRepository.save(用户)
.map(_->{
Map Map=newhashmap();
地图放置(“状态”,1);
返回图;
});
}

在上面的代码中,您并没有打破反应链,而是按照自己的意愿返回自定义映射。

那么您的userRepository.save()做什么?将用户插入mongopublic Mono registerService(用户用户){map map=new HashMap(8);map.put(“状态”,1);userRepository.save(用户).subscribe();return Mono.just(map);}subscribe()注意在非阻塞作用域less中调用“subscribe…”(Ctrl+F1)检查信息:返回发布者类型(Publisher、Flux、Mono)的方法不应该直接调用订阅方法,因为它可以打破被动调用链,而不是使用像Primmap、Zip这样的组合运算符订阅订阅,那么,ETCI不想返回用户,只需返回自定义图,用户插入到MangGubHi好友中,非常感谢。我尝试使用您的代码,但是当我调用RE时gisterService(),用户返回null,我真的不知道出了什么问题。
t user={“username”:“admin”,“password”:“123456”}…mongodb return我的用户返回null请求数据:{“username”:“admin”,“password”:“123456”}响应:“未能实例化[com.reactive.entity.user]:构造函数引发了异常;嵌套异常为java.lang.NullPointerException:用户名标记为@NonNull,但为null“@LceMan这与此问题中描述的问题不同。