자바와 스프링 부트에서 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 쿼리를 전송할 수 있다.