春季启动未创建graphql端点

时间:2019-11-07 11:08:47

标签: java spring-boot graphql graphql-java

我想将Graphql集成到我的项目中。我在以下(几个)教程中开始了一个新的Spring引导项目,但是它们都不起作用:graphql端点未出现,似乎未检测到graphqls文件?

我的项目是一个Maven项目,具有以下依赖性:

<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphql-spring-boot-starter</artifactId>
    <version>5.10.0</version>
</dependency>
<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphql-java-tools</artifactId>
    <version>5.6.1</version>
</dependency>
<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphiql-spring-boot-starter</artifactId>
    <version>5.10.0</version>
    <scope>runtime</scope>
</dependency>

为了使帖子简短,我尝试只放置相关的依赖项,避免其他依赖项(Lombok,jpa等...)

还有我的graphqls文件(在资源文件夹中):

type Vehicle {
    id: ID!,
    type: String,
    modelCode: String,
    brandName: String,
    launchDate: String
}
type Query {
    vehicles(count: Int):[Vehicle]
    vehicle(id: ID):Vehicle
}
type Mutation {
    createVehicle(type: String!, modelCode: String!, brandName: String, launchDate: String):Vehicle
}

根据文档,应该创建graphql端点,因为我具有graphql-spring-boot-starter依赖关系和将通过我的vehicle.graphqls文件自动创建的模式(以及graphql-java-tools依赖关系)

  

如果将graphql-spring-boot-starter添加为启动应用程序的依赖项,并且应用程序中存在GraphQLSchema bean,则可以在/ graphql上访问servlet [...]   当在类路径中找到受支持的graphql-java模式库时,也可以自动创建GraphQL模式。

我使graphql端点出现的唯一方法是通过以编程方式创建模式(我想避免这种情况):

@Bean
    GraphQLSchema schema() {
    return GraphQLSchema.newSchema()
            .query(GraphQLObjectType.newObject()
                    .name("query")
                    .field(field -> field
                            .name("test")
                            .type(Scalars.GraphQLString)
                            .dataFetcher(environment -> "response")
                            )
                    .build())
            .build();
}

我想我错过了一些东西,但是经过一天的尝试,我现在陷入了困境,我看不出我的错误是什么。

1 个答案:

答案 0 :(得分:0)

您是否将GraphQLQueryResolver公开为@Bean,以便自动配置知道搜索架构文件?

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class GraphQLConfiguration {

    @Bean
    QueryResolver queryResolver() {
        return new QueryResolver();
    }

    @Bean
    MutationResolver mutationMutation() {
        return new MutationResolver();
    }

}

Documentation for author's quote

如果将graphql-spring-boot-starter添加为引导应用程序的依赖项,并且该应用程序中存在GraphQLSchema bean,则可以在/ graphql上访问servlet。查看简单示例,了解所需的最低限度。

当在类路径中找到受支持的graphql-java模式库时,也可以自动创建GraphQL模式。

遵循该文档的主题,最终将引导您the GraphQL Java Tools project documentation,其中介绍了如何根据您的GraphQLSchema定义生成必要的.graphqls对象。最后,我们必须以某种方式将这些定义映射到Java中,这是Spring Boot,因此@Bean是您的根解析器,因此它具有可以使用的实现,您应该一切顺利。