java - 返回空 JSON 的 Spring 应用程序

标签 java spring eclipse spring-boot spring-tool-suite

我已经开始阅读“学习 Spring Boot 2.0 - 第二版:简化基于微服务和响应式(Reactive)编程的闪电般快速应用程序的开发”,并且在使用第一个示例程序时遇到了问题。

当我在 http://localhost:8080/chapters 上执行 GET 时,它返回:

[
    {},
    {},
    {}
]

代替:

[
    {"id": 1,
     "name": "Quick Start with Java"},
    {"id":,
     "name": "Reactive Web with Spring Boot"},
    {"id": 3,
     "name": ... and more!"}
]

这是我的代码(减去导入):

@Data
@Document
public class Chapter {

    @Id
    private String id;
    private String name;

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


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

@Configuration
public class LoadDatabase {

@Bean
CommandLineRunner init(ChapterRepository repository) {
    return args -> {
        Flux.just(
                new Chapter("Quick Start with Java"),
                new Chapter("Reactive Web with Spring Boot"),
                new Chapter("... and more!"))
        .flatMap(repository::save)
        .subscribe(System.out::println);
        };
    }
}

@RestController
public class ChapterController {

    private final ChapterRepository repository;

    public ChapterController(ChapterRepository repository) {
        this.repository = repository;
    }

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

}

我的代码有问题吗?

附加信息

正如下面的评论所述,我有了一些进步。以前我只尝试在我的 IDE 中运行它。我使用 gradle 构建项目,./gradlew clean build 并使用 java -jar build/libs/learning-spring-boot-0.0.1-SNAPSHOT.jar 从我的终端运行它,我得到了正确的响应。适用于 Insomnia、Postman、浏览器和 curl。这让我可以继续我的工作,但我很乐意为我的 IDE 解决这个问题。我正在为 Eclipse 使用 Spring 工具套件。

我注意到的一件事是,当我在 STS 中启动服务器时,控制台输出以这样结束:

2018-09-09 09:54:50.646  INFO 12073 --- [ntLoopGroup-2-3] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:4, serverValue:31}] to localhost:27017
2018-09-09 09:54:50.647  INFO 12073 --- [ntLoopGroup-2-2] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:3, serverValue:30}] to localhost:27017
2018-09-09 09:54:50.649  INFO 12073 --- [ntLoopGroup-2-4] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:5, serverValue:32}] to localhost:27017
    com.greglturnquist.learningspringboot.learningspringboot.Chapter@c56c194
    com.greglturnquist.learningspringboot.learningspringboot.Chapter@795759ac
    com.greglturnquist.learningspringboot.learningspringboot.Chapter@76e125f2

但是在终端中运行时我可以看到书名:

2018-09-09 09:52:42.768  INFO 12058 --- [ntLoopGroup-2-2] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:3, serverValue:25}] to localhost:27017
2018-09-09 09:52:42.789  INFO 12058 --- [ntLoopGroup-2-3] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:4, serverValue:26}] to localhost:27017
2018-09-09 09:52:42.791  INFO 12058 --- [ntLoopGroup-2-4] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:5, serverValue:27}] to localhost:27017
Chapter(id=5b94df5ac0b4b02f1af43f43, name=Quick Start with Java)
Chapter(id=5b94df5ac0b4b02f1af43f44, name=Reactive Web with Spring Boot)
Chapter(id=5b94df5ac0b4b02f1af43f45, name=...and more!)

最佳答案

我遇到了同样的问题,对我来说,我必须确保我的 IDE 启用了 Lombok 注释处理(我使用的是 IntelliJ Ultimate)。启用此功能并重新启动我的应用程序时,我开始看到预期的数据,而不是空的 JSON 数组。

关于java - 返回空 JSON 的 Spring 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51926394/

相关文章:

java - 无法使用eclipse引用java中的项目

java - 需要使用 JavaFX 在 HBox 中对图像进行动画处理的帮助

java - 在 RecyclerView Adapter 中使用 onActivityResult

java - Gradle 项目同步失败 - Android Studio 0.8.14

java - 是否可以使用 Spring 创建控制台应用程序?

java - 使用 Spring MVC 通过 URL 访问静态方法

java - Spring Security 的特殊登录

spring - 如何根据需要标记 Spring MVC 参数

java - Eclipse 找不到 Oracle VM 模拟器

java - 无法在我的 Eclipse 中安装任何类型的 Spring 工具