Java 如何使用Kickstart-Spring-Boot-GraphQL从逻辑上拆分我的GraphQL模式和解析器

Java 如何使用Kickstart-Spring-Boot-GraphQL从逻辑上拆分我的GraphQL模式和解析器,java,spring-boot,graphql,graphql-java,Java,Spring Boot,Graphql,Graphql Java,目前,我所有的查询解析程序都在一个查询类和一个查询架构/类型下,如下所示: schema { query: Query #I'd prefer UserQueries and OrganisationQueries mutation: UserMutations mutation: OrganisationMutations } type Query { fetchUser(email: String): User listOrganisations(m

目前,我所有的查询解析程序都在一个查询类和一个查询架构/类型下,如下所示:

schema {
    query: Query #I'd prefer UserQueries and OrganisationQueries
    mutation: UserMutations
    mutation: OrganisationMutations
}

type Query {
    fetchUser(email: String): User
    listOrganisations(max: Int): [GenericListing]
}

...
以及我在一个类中的所有查询:

@组件
公共类查询实现GraphQLQueryResolver{
公共列表组织(最大整数){
...
}
公共用户fetchUser(字符串电子邮件){
...
}
}
我已经成功地将我的突变按用户和组织进行了拆分和逻辑分离

@组件
公共类UserMutations实现GraphQLMutationResolver{
公共用户createUser(字符串firstname、字符串lastname、字符串email、字符串msisdn、字符串密码){
...
}
}

如何在逻辑上分离查询?或者至少不将所有查询都包含在查询类中。

如果要完全分离与用户相关的查询和与组织相关的查询,请执行以下操作:

  • 将单个.graphqls文件拆分为单独的文件:
  • user.graphqls:

    organization.graphqls:

  • 拆分解析器:
  • @组件
    公共类UserQuery实现GraphQLQueryResolver{
    公共用户fetchUser(字符串电子邮件){
    ...
    }
    }
    
    @组件
    公共类OrganizationQuery实现GraphQLQueryResolver{
    公共列表组织(最大整数){
    ...
    }
    }
    

    此外,还可以使用graphql java codegen插件根据模式自动生成接口和数据类。顺便说一下,它支持多个架构文件:

    • Gradle插件:
    • Maven插件:
    您好,我正在尝试这样做(多个graphqls文件),但Altair似乎只选择了“最后一个”。graphiql也存在同样的问题。有什么想法吗?
        schema {
            query: Query
            mutation: Mutation
        }
        type Query {
            fetchUser(email: String): User
        }
        ...
    
        schema {
            query: Query
            mutation: Mutation
        }
        type Query {
            listOrganizations(max: Int): [GenericListing]
        }
        ...