👋 欢迎来到 Java 和 DGS 的数据加载器!
我们很激动您来这里了!我们将共同努力改善 GraphQL 应用程序中的性能,深入了解使用 数据加载器 的最佳实践。我们将在今后提供许多实践机会,您会在学习这个主题时遇到测试和挑战。
在本课程中,我们将解决 GraphQL 项目中会出现的一个偷偷摸摸的性能问题: n+1 问题。一旦我们理解了此问题发生的原理,我们将使用数据加载器实现解决方案。我们将逐步实现和使用 DGS 项目中的数据加载器,并了解它们对应用性能的直接影响。
让我们开始吧!
我们正在构建的内容
为了探讨此主题,我们将基于一个名为 GraphQL 的现有应用: Airlock。
Airlock 是一个星际旅行预订应用:我们可以借助这一资源在广阔的宇宙中找到一个好去处!我们在 GraphQL 服务器 的 GraphQL 课程简介.
但是不用担心,你不必完成第一门课程就可以开始!我们会给你一个新的 repo 来克隆,并指导你完成所有步骤,以便使数据加载器启动并运行。
让我们准备一切开始构建!
项目设置
如需参加课程,你需要以下内容
先决知识
我们假设你熟悉 GraphQL概念,如类型、查询和 变更。如果你需要复习,请查看我们的 Java 和 DGS 简介到 GraphQL 课程。在本课程中,我们使用 领域图服务 (DGS) 框架。DGS 由 Netflix 团队创建,它支持在 Spring Boot 应用程序中使用 GraphQL,只需添加一些依赖项。
你还可以轻松应对 Java 编程概念(本课程使用 JDK 17)和 Spring Boot的基本内容。
代码编辑器或 IDE
我们正在使用 IntelliJ IDEA(社区版)。
许多流行的 IDE 都提供启用 GraphQL语法高亮的插件。对于 IntelliJ,我们推荐 GraphQL 插件。
克隆存储库
本课程从 Java 和 DGS 简介到 GraphQL停止的地方接续,但首先完成该课程并不是先决条件!要重新开始,请运行以下命令。
git clone https://github.com/apollographql-education/odyssey-dataloaders-dgs.git
运行应用程序
最后,让我们启动并运行我们的服务器。
打开 odyssey-dataloaders-dgs
目录在您的 IDE 中并导航至 ListingApplication
主文件位于 com.example.listings
包中。这是我们应用程序的起点。
@SpringBootApplicationpublic 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)
接下来
让我们了解一下数据加载器,它们解决的问题,以及如何将它们引入到我们的应用程序中。
分享您对本课程的问题和评论
本课程目前处于
您需要一个 GitHub 帐户才能在下面发帖。没有吗? 转而发帖至我们的 Odyssey 论坛。