1. 课程概述和设置
10m

👋 欢迎来到 Java 和 DGS 的数据加载器!

我们很激动您来这里了!我们将共同努力改善 应用程序中的性能,深入了解使用 数据加载器 的最佳实践。我们将在今后提供许多实践机会,您会在学习这个主题时遇到测试和挑战。

在本课程中,我们将解决 项目中会出现的一个偷偷摸摸的性能问题: n+1 问题。一旦我们理解了此问题发生的原理,我们将使用数据加载器实现解决方案。我们将逐步实现和使用 DGS 项目中的数据加载器,并了解它们对应用性能的直接影响。

让我们开始吧!

我们正在构建的内容

为了探讨此主题,我们将基于一个名为 的现有应用: Airlock

Mockup of Airlock

Airlock 是一个星际旅行预订应用:我们可以借助这一资源在广阔的宇宙中找到一个好去处!我们在 GraphQL 课程简介.

但是不用担心,你不必完成第一门课程就可以开始!我们会给你一个新的 repo 来克隆,并指导你完成所有步骤,以便使数据加载器启动并运行。

让我们准备一切开始构建!

项目设置

如需参加课程,你需要以下内容

先决知识

我们假设你熟悉 概念,如类型、查询和 。如果你需要复习,请查看我们的 Java 和 DGS 简介到 GraphQL 课程。在本课程中,我们使用 领域图服务 (DGS) 框架。DGS 由 Netflix 团队创建,它支持在 Spring Boot 应用程序中使用 ,只需添加一些依赖项。

你还可以轻松应对 Java 编程概念(本课程使用 JDK 17)和 Spring Boot的基本内容。

代码编辑器或 IDE

我们正在使用 IntelliJ IDEA(社区版)

许多流行的 IDE 都提供启用 语法高亮的插件。对于 IntelliJ,我们推荐 GraphQL 插件

克隆存储库

本课程从 Java 和 DGS 简介到 GraphQL停止的地方接续,但首先完成该课程并不是先决条件!要重新开始,请运行以下命令。

git clone https://github.com/apollographql-education/odyssey-dataloaders-dgs.git

运行应用程序

最后,让我们启动并运行我们的服务器。

打开 odyssey-dataloaders-dgs目录在您的 IDE 中并导航至 ListingApplication主文件位于 com.example.listings包中。这是我们应用程序的起点。

@SpringBootApplication
public class ListingApplication {
public static void main(String[] args) {
SpringApplication.run(ListingApplication.class, args);
}
}

在 IntelliJ 中,我们可以单击 main功能旁边距中方便的绿色播放按钮,或者单击位于界面顶部的按钮。

或者,您可以在项目根目录中打开一个新的终端并运行以下命令

./gradlew bootRun

在 IDE 运行输出中,我们应该看到我们的应用程序正在运行!

> Task :ListingApplication.main()
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.0)
任务!

接下来

让我们了解一下数据加载器,它们解决的问题,以及如何将它们引入到我们的应用程序中。

下一步

分享您对本课程的问题和评论

本课程目前处于

测试版
.您的反馈可以帮助我们提高!如果您遇到困难或困惑,请告诉我们,我们会帮助您。所有评论都是公开的,并且必须遵循 Apollo 行为准则。请注意,已解决或处理的评论可能会被删除。

您需要一个 GitHub 帐户才能在下面发帖。没有吗? 转而发帖至我们的 Odyssey 论坛。