关于java:Flux返回空对象

Flux returns empty objects

我今天从Flux开始,因为它功能强大。现在,我已经建立了一个完整的Spring Boot 2项目来处理这个问题,但是返回的对象为空。

我开始了一个非常简单的带有某些依赖项的Spring Boot项目:

  • 响应式Web(嵌入式Netty + Spring WebFlux)
  • 反应性MongoDB(Spring Data MongoDB)
  • Thymeleaf模板引擎
  • 龙目岛(简化编写POJO)

并添加了一些代码:

控制器:

1
2
3
4
5
6
7
8
9
10
11
@RestController
public class ChapterController {

    @Autowired
    private ChapterRepository repository;

    @GetMapping("/chapters")
    public Flux<Chapter> listing() {
        return repository.findAll();
    }
}

仓库:

1
public interface ChapterRepository extends ReactiveCrudRepository<Chapter, String> {}

配置:(以在嵌入的Mongodb中加载一些数据)
@组态
公共类LoadDatabase {

1
2
3
4
5
6
7
8
9
10
11
12
    @Bean
    CommandLineRunner init(ChapterRepository repository){
        return args -> {
            Flux.just(
                new Chapter("The life of Batman"),
                new Chapter("Batmans most glorious' code"),
                new Chapter("The hero we needed but didn't deserve, Batman."))
                    .flatMap(repository::save)
                    .subscribe(System.out::println);
        };
    }
}

资料类别:

1
2
3
4
5
6
7
8
9
10
11
12
@Data
@Document
public class Chapter {

    @Id
    private String id;
    private String name;

    public Chapter(String name) {
        this.name = name;
    }
}

好的,现在当我启动应用程序并访问端点:http:// localhost:8080 / chapters时,它将返回以下内容:

1
2
3
4
5
[
   {},
   {},
   {}
]

它显示的对象数量与我在LoadDatabase类中创建的对象数量相同。当我更改创建的对象数量时,它将在端点上显示该数量。

我不知道我做错了什么,我尝试调试返回的助焊剂对象。但是我不能从中得到任何东西。

我希望有人能发现我的错误!


您正在获取空对象,因为未保存数据并且出了点问题。

您正在使用@Data lombok注释,就像在类上具有隐式@ Getter,@ Setter,@ ToString,@ EqualsAndHashCode和@RequiredArgsConstructor注释一样(除非存在任何显式编写的构造函数,否则不会生成任何构造函数)。 但是有时,如果未在IDE中正确配置,它将无法正常工作,因此请尝试使用手动getter和setter方法设置属性。

如果手动吸气器/安装器正常工作,请尝试以下操作以对Lombok进行故障排除。

确保您的IDE知道lombok。

IntelliJ:添加了Lombok,但是在Intellij IDEA中无法识别吸气剂和吸气剂

Eclipse:Lombok不会生成getter和setter

如果问题仍然存在,请遵循此类似主题的评论之一