🔙뒤로가기

자바와 스프링 부트에서 GraphQL을 사용하려면, graphql-java, graphql-spring-boot-starter, graphql-java-tools 등의 라이브러리를 사용하면 된다.

의존성 추가

dependencies {
    implementation 'com.graphql-java:graphql-spring-boot-starter:7.1.1'
    implementation 'com.graphql-java-kickstart:graphql-java-tools:11.0.1'
}

스키마 작성

GraphQL의 스키마를 정의하려면, src/main/resources 디렉토리 아래에 .graphqls 확장자를 가진 파일을 생성한다. 이 파일에는 GraphQL의 타입과 쿼리, 뮤테이션을 정의한다.

type User {
  id: ID!
  name: String!
  email: String!
}

type Query {
  user(id: ID!): User
}

데이터 모델 정의

스키마에 정의된 타입에 해당하는 데이터 모델을 자바 클래스로 정의한다.

public class User {
    private String id;
    private String name;
    private String email;

    // getter, setter 생략...
}

리졸버 작성

스키마에 정의된 쿼리와 뮤테이션을 처리하는 리졸버를 작성한다. 리졸버는 GraphQLQueryResolver, GraphQLMutationResolver 인터페이스를 구현한 클래스로 정의한다.

import com.coxautodev.graphql.tools.GraphQLQueryResolver;

public class UserQueryResolver implements GraphQLQueryResolver {
    public User user(String id) {
        // 데이터베이스에서 사용자 정보를 찾아 반환
        // 실제로는 서비스 레이어를 통해 데이터를 조회하게 된다.
        return findUserById(id);
    }
}

이렇게 구성한 후, 클라이언트에서는 http://localhost:8080/graphql 엔드포인트를 통해 GraphQL 쿼리를 전송할 수 있다.