当前位置: 首页 > 知识库问答 >
问题:

没有用graphql-java-tools启动graphql servlet(找不到模式文件?)

史和泰
2023-03-14

因此,根据graphql-java-kickstart/graphql-java-kickstart tools,当依赖项'com.graphql-java-kickstart:graphql-spring-boot-starter'被添加到项目中,并且.graphqls模式文件被自动扫描时,'graphql'endpoint将变得可用。

我有以下依赖关系:

...
        <spring-boot.version>2.3.3.RELEASE</spring-boot.version>
        <graphql.version>7.0.1</graphql.version>
        <graphql-java-tools.version>6.2.0</graphql-java-tools.version>

...

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>${spring-boot.version}</version>
        </dependency>

        <!-- graphql -->
        <dependency>
            <groupId>com.graphql-java-kickstart</groupId>
            <artifactId>graphql-spring-boot-starter</artifactId>
            <version>${graphql.version}</version>
        </dependency>

        <dependency>
            <groupId>com.graphql-java-kickstart</groupId>
            <artifactId>graphiql-spring-boot-starter</artifactId>
            <version>${graphql.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.graphql-java-kickstart</groupId>
            <artifactId>graphql-java-tools</artifactId>
            <version>${graphql-java-tools.version}</version>
        </dependency>

架构定义

in query.graphqls:
type Query {
    user(username: String!)
    users: [User]
}

in user.graphqls:
type User {
    userId: Number!
    username: String!
}

和一个GraphQLQueryResolver:

@Component
public class UserQueryResolver implements GraphQLQueryResolver {
    private final UserRepository userRepository;

    public UserQueryResolver(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public Iterable<User> users() {
        return this.userRepository.findAll();
    }

    public User user(String username) {
        return this.userRepository.findByUsername(username).orElseThrow();
    }
}

public interface UserRepository extends JpaRepository<User, Integer> {
    Optional<User> findByUsername(String username);
}

根据文件:

我想我已经有了它需要的一切,但是导航到localhost:8080/graphql会得到404。注意:localhost:8080/graphiql有效,但无法加载架构。上面写着:

{
  "timestamp": "2020-09-15T12:22:21.748+00:00",
  "status": 404,
  "error": "Not Found",
  "message": "No message available",
  "path": "/graphql"
}

我错过了什么?

共有1个答案

尉迟韬
2023-03-14

显然,应用程序找不到任何JpaRepositories,因为SpringBootApplication starter类位于com.package.some.app,而存储库位于com.package.some.domain.repositories。组件扫描仪只扫描包为com.package.som.app.*的组件

 类似资料:
  • GraphQL Java Tools This library allows you to use the GraphQL schema language to build your graphql-java schema.Inspired by graphql-tools, it parses the given GraphQL schema and allows you to BYOO (br

  • GraphQL Tools 是一套用于快速开发 GraphQL Schemas 的实用工具。GraphQL Tools 是一组 NPM 包和一个关于如何在 JavaScript 中构建 GraphQL 模式和解析器的结构,遵循 GraphQL-first 开发工作流程。 @graphql-tools/*包中的函数不仅对构建服务器有用。它们也可以在浏览器中使用,例如在开发或测试期间模拟后端。 它们适

  • 问题内容: 我拥有Eclipse和Java SE,并且正在运行Windows XP,并尝试为Eclipse设置Android。 我先来: 访问http://developer.android.com。2.在出现的主页上,单击链接以下载Android SDK。3.找到适合您的操作系统(Windows,Mac OS X或Linux)的链接。4.单击链接开始下载。 我安装了Android SDK工具 然

  • 由于我已经更新到Android SDK工具v.23,AVD管理器不允许我启动模拟器。 “模拟器:错误:x86仿真当前需要硬件加速!请确保Intel HAXM已正确安装并可用。CPU加速状态:此计算机上未安装HAX(/dev/HAX缺失)。” 我的笔记本电脑不支持虚拟化。但是,在Android SDK工具的第22版之前,我的模拟器工作正常(速度不是很快,因为没有安装HAX,但是它仍然比ARM图像好)

  • 我正在尝试定义一个Java 9模块。我定义了类似的东西: 然后,我的许多文件开始给我错误,他们找不到一些包。然后我使用了IntelliJ的自动帮助功能,并将其添加到我的模块信息中。java中有几个“requires”语句。所以它变成了这样: 现在IntelliJ显示了我所有的代码,没有错误。但当我在“Maven项目”窗口中单击“编译”(我使用Maven 3.5.3和Oracle JDK 10进行编

  • 在我的Spring Boot应用程序中,我从Thymeleaf切换到JSP,它在我的本地计算机上正常工作,但当我将它上传到Heroku服务器时,我发现出现了一个意外错误(type=notfound,status=404)/WEB-INF/jsp/home。jsp 它的罐子打包,如果它在本地工作,但不是在Heroku服务器上,这意味着什么?