CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
GraphQL 入门/课时/Spring for GraphQL
RawBlame
课时目录12 节

GraphQL 入门

  1. 01GraphQL 是什么
  2. 02Schema 与类型
  3. 03Query 与字段选择
  4. 04Mutation
  5. 05Resolver 模型
  6. 06Spring for GraphQL
  7. 07N+1 与 DataLoader
  8. 08Apollo Client
  9. 09GraphQL vs REST 选型
  10. 10GraphiQL 与 introspection
  11. 11安全与限流
  12. 12综合练习

Spring for GraphQL

QueryMapping 注解、schema.graphqls、GraphiQL。

35 分钟

Spring for GraphQL

Spring for GraphQL 把 Schema 与 Java Bean 绑定:用 @QueryMapping、@MutationMapping、@SchemaMapping 实现 Resolver,与现有 spring-boot-essentials 项目共存。

学习目标

  • 添加 spring-boot-starter-graphql 依赖
  • 放置 schema.graphqls 并映射 Query
  • 启用 GraphiQL 做本地调试(实验路由,非生产主 API)

核心内容

依赖与配置

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-graphql</artifactId>
</dependency>
# application.yml(实验 profile)
spring:
  graphql:
    graphiql:
      enabled: true
    schema:
      locations: classpath:graphql/

重要:CodeRoadMap 对外 主 API 仍是 REST /tracks。GraphQL 建议挂在 /graphql 或 lab profile,避免与现有 TrackController 路由混淆。

QueryMapping 示例

src/main/resources/graphql/track.graphqls:

type Query {
  tracks: [Track!]!
  track(slug: String!): Track
}
@Controller
public class TrackGraphqlController {

    private final TrackService trackService;

    @QueryMapping
    public List<Track> tracks() {
        return trackService.findAll();
    }

    @QueryMapping
    public Track track(@Argument String slug) {
        return trackService.findBySlug(slug).orElse(null);
    }

    @SchemaMapping
    public List<Lesson> lessons(Track track) {
        return lessonService.findByTrackSlug(track.getSlug());
    }
}

复用现有 TrackService / JPA 实体,与 REST 共享事务边界(sb-transaction)。

开发环境访问 /graphiql 验证 Schema;生产关闭 GraphiQL(gql-security)。nextjs-essentials 主站继续 fetch REST /tracks;实验页可 POST /graphql 对比。

练习

  • 在 lab profile 启动 GraphiQL,查询全部 track 的 、
slug
title
  • 为 lesson Query 增加 @QueryMapping 方法
  • 确认 REST GET /tracks 与 GraphQL tracks 返回数据一致
  • 小结

    Spring GraphQL = 注解 + schema 文件 + 复用 Service 层。 下一课 N+1 与 DataLoader 性能。

    加载本节练习…
    ← 上一课Resolver 模型下一课 →N+1 与 DataLoader