GraphQL Java Tools是一个软件包,能够从GraphQL的模式定义*.graphqls文件构建出对应的Java的POJO类型对象。
GraphQL Java Tools的最新版本是2017.11发布的4.3.0。
1. GraphQL Java Tools的项目名称为graphql-java-servlet,其本身依赖如下软件模块:
- com.graphql-java:graphql-java:6.0
- com.fasterxml.jackson.core:jackson-*:2.8.8
*.graphqls文件 <-> POJO类型对象 <-> Resolvers对象 <-> data Repository对象
3. GraphQL Java Tools提供了多种Resolvers的接口,用以为POJO类型对象填充数据
1)三个Root Resolvers(都继承自GraphQLResolver)- GraphQLQueryResolver
- GraphQLMutationResolver
- GraphQLSubscriptionResolver
2)此外,任何引用其他POJO类型的POJO类型对象,其Resolvers类的定义都继承自GraphQLResolver。
所有的Resolvers对象,在SchemaParser生成GraphQLSchema时,都要以参数的形式提供给.resolvers(...)方法。
4. GraphQL Java Tools能够为POJO对象中的fields自动关联到Resolvers的方法,开发工作如下:
1)在*.graphqls文件中给出新fields(即在POJO类型对象中出现该fields),详情参看GraphQL规范,此处略。
2)在Resolvers类中给出对应的fields访问方法,方法命名如下(任选其一):
- <fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
- is<Fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
- get<Fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
- getField<Fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
其中,DataFetchingEnvironment都是可选的。
3)在dataRepository类中给出对应的数据访问方法,方法命名如下(任选其一):
- <fieldname>(*fieldArgs [, DataFetchingEnvironment])
- is<Fieldname>(*fieldArgs [, DataFetchingEnvironment])
- get<Fieldname>(*fieldArgs [, DataFetchingEnvironment])
- getField<Fieldname>(*fieldArgs [, DataFetchingEnvironment])
其中,DataFetchingEnvironment都是可选的。
5. 在Maven项目中引用GraphQL Java Tools,在pom.xml中引用如下:
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>4.3.0</version>
</dependency>
参考链接:
https://github.com/graphql-java/graphql-java-tools