我今天从Flux开始,因为它功能强大。现在,我已经建立了一个完整的Spring Boot 2项目来处理此问题,但是返回的对象为空。
我开始了一个非常简单的带有某些依赖项的Spring Boot项目:
并添加了一些代码:
控制器:
@RestController
public class ChapterController {
@Autowired
private ChapterRepository repository;
@GetMapping("/chapters")
public Flux<Chapter> listing() {
return repository.findAll();
}
}
存储库:
public interface ChapterRepository extends ReactiveCrudRepository<Chapter, String> {}
配置:(用于在嵌入的Mongodb中加载一些数据) @组态 公共类LoadDatabase {
@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);
};
}
}
数据类:
@Data
@Document
public class Chapter {
@Id
private String id;
private String name;
public Chapter(String name) {
this.name = name;
}
}
好吧,现在当我启动应用程序并访问端点:http://localhost:8080/chapters时,它将返回以下内容:
[
{},
{},
{}
]
它显示的数量与我在LoadDatabase
类中创建的对象相同。当我更改创建的对象数量时,它将在端点上显示该数量。
我不知道我做错了什么,我尝试调试返回的助焊剂对象。但是我不能从中得到任何东西。
我希望有人能发现我的错误!
答案 0 :(得分:1)
您正在获取空对象,因为未保存数据并且出现了问题。
您正在使用@Data
lombok注释,就像在类上具有隐式@ Getter,@ Setter,@ ToString,@ EqualsAndHashCode和@RequiredArgsConstructor注释一样(除非存在任何显式编写的构造函数,否则不会生成任何构造函数) )。但是有时,如果在IDE中未正确配置,它将无法正常工作,因此请尝试使用手动获取器和设置器设置属性。
如果手动吸气器/安装器正常工作,请尝试以下操作以解决龙目岛问题。
确保您的IDE知道lombok。
IntelliJ:Lombok added but getters and setters not recognized in Intellij IDEA
Eclipse:Lombok is not generating getter and setter
如果问题仍然存在,请遵循该类似主题的评论here