`
openxtiger
  • 浏览: 151693 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【GraphQL Java】implements,unions 的实现

阅读更多

编写 以下 GraphQL schema

1.定义AppUsageRecord的类型

 

 # Store usage for app subscriptions with usage pricing.
type AppUsageRecord implements Node {
    # The date and time when the usage record was created.
    # createdAt: DateTime!

    # The description of the app usage record.
    description: String!

    # Globally unique identifier.
    id: ID!

    # The price of the usage record. The only permitted currency code is USD.
    #price: MoneyV2!

    # Defines the usage pricing plan the merchant is subscribed to.
    subscriptionLineItem: AppSubscriptionLineItem!

}

 2. 定义Node接口

 

 

# An object with an ID to support global identification.
interface Node {
    # Globally unique identifier.
    id: ID!
}

 3.相应的Java AppUsageRecord实现

@Data
//Store usage for app subscriptions with usage pricing.
public class AppUsageRecord implements Node {
    //The date and time when the usage record was created.
    private OffsetDateTime createdAt;

    //The description of the app usage record.
    private String description;

    //Globally unique identifier.
    private String id;

    //The price of the usage record. The only permitted currency code is USD.
    //private MoneyV2 price;

    //Defines the usage pricing plan the merchant is subscribed to.
    private AppSubscriptionLineItem subscriptionLineItem;

}

  4.相应的Java Node实现

public interface Node {
    //Globally unique identifier.
    String getId();

    void setId(String id);
}

 5. 如果直接运行,系统将会报错

     Caused by: graphql.kickstart.tools.SchemaClassScannerError: Object type 'AppUsageRecord' implements a known interface, but no class could be found for that type name.  Please pass a class for type 'AppUsageRecord' in the parser's dictionary.

 

6. 解决方案:

自定义配置AppUsageRecord在parser's dictionary.中

@Configuration
public class GraphQLConfig {
    @Bean
    public SchemaParserDictionary dictionary() {
        SchemaParserDictionary dictionary = new SchemaParserDictionary();
        dictionary.add(AppUsageRecord.class);
        return dictionary;
    }
}

 

 

 

 

分享到:
评论

相关推荐

    GraphQL Java Practice with Spring Boot

    GraphQL Java是用于Java环境的GraphQL服务器实现。它定义了一个Schema,该Schema明确了可查询或变异的字段及其类型。有两种方式定义Schema: - **程序化方式**:通过Java代码直接创建GraphQL对象。例如,创建一个名...

    graphql-java:Spring Boot项目使用graphql-java演示GraphQL

    在Java开发中,`graphql-java`库是实现GraphQL服务的一个流行选择,尤其当与Spring Boot结合时,可以创建高效且灵活的数据查询API。本篇文章将深入探讨如何在Spring Boot项目中使用`graphql-java`来搭建和运行...

    java中extends与implements的区别.docx

    Java 中的继承和实现接口是两个基本概念,extends 和 implements 是两个关键字,它们之间的区别是 Java 编程语言中最重要的基础知识。 extends 的作用 在 Java 中,extends 关键字用于继承父类,创建一个子类。在...

    Java接口的实现 操作

    在 Java 中,接口的实现可以使用 implements 关键字来实现。例如,如果我们定义了一个接口 MyInterface,我们可以在某个类中使用 implements 关键字来实现该接口。例如: ```java public interface MyInterface { ...

    java利用delayedQueue实现本地的延迟队列

    Java 利用 DelayedQueue 实现本地的延迟队列 DelayedQueue 是 Java 中的一种特殊的阻塞队列,它用于存放实现了 Delayed 接口的对象。这种队列是有序的,即队头对象的延迟到期时间最长。 DelayedQueue 能够满足我们...

    Javaextends与implements的区别.docx

    在 Java 中,extends 和 implements 是两个关键字,都是用来建立类与类或类与接口之间的关系的,但它们的使用场景和实现机制却有着很大的不同。 extends extends 关键字用于继承某个类,使得子类可以使用父类的...

    kerberos的java实现

    Java语言实现的Kerberos允许开发者在Java应用中集成这种强大的安全机制。 **Java与Kerberos的结合** Java中的Kerberos支持主要体现在Java的`javax.security.auth.kerberos`包中,提供了与Kerberos协议交互的一系列...

    java SPI机制实现服务接口和服务实现分离源码Demo

    Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这种机制使得应用程序能够与多个第三方组件进行交互,而无需在编译时硬编码具体的实现类。SPI机制的...

    java 拦截器实现

    在Java中,有两种主要的方式来实现拦截器:一种是基于接口的JDK动态代理,另一种是基于类的CGLIB动态代理。这里我们将深入探讨这两种方式以及与责任链模式的关系。 首先,让我们理解什么是拦截器。拦截器是一种设计...

    用Java动态代理实现AOP

    Java动态代理实现AOP Java动态代理是实现Aspect Oriented Programming(AOP)的重要手段。在Java中,动态代理可以通过java.lang.reflect InvocationHandler接口和java.lang.reflect.Proxy类来实现。AOP的主要思想...

    Java多线程实现异步调用实例

    在本实例中,我们将深入探讨如何使用Java实现多线程以实现异步调用,并理解其背后的机制。 首先,多线程允许一个程序同时执行多个任务。在Java中,我们可以通过继承`Thread`类或实现`Runnable`接口来创建线程。在这...

    Java多线程实现生产者消费者

    下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型中,“生产者”线程负责生成产品并放入“仓库”,而“消费者”线程则负责从仓库中取出产品并进行消费。...

    Java实现远程控制

    Java作为一种跨平台的编程语言,提供了多种方法来实现远程控制功能。本篇文章将详细探讨如何使用Java来实现这一目标。 首先,我们需要理解Java中的远程方法调用(Remote Method Invocation,简称RMI)。RMI是Java...

    Java动态代理两种实现方式

    Java提供了两种主要的动态代理实现方式:JDK自身的动态代理(基于接口)和Cglib库。 ### JDK动态代理 JDK动态代理是通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现的。Proxy类...

    Java:接口实现两数的加减乘除

    在Java编程语言中,接口(Interface)是一种定义行为规范的抽象类型,它允许类实现多个接口,从而实现多继承。接口通常包含一组抽象方法,这些方法没有具体实现,需要实现接口的类来提供具体的实现。在本例中,我们...

    javarmi来实现远程下载文件

    Java RMI(Remote Method Invocation)是Java平台提供的一种用于分布式计算的技术,它允许在不同的Java虚拟机之间调用方法,从而实现远程对象的交互。在本场景中,我们利用Java RMI来实现实时的远程文件下载功能。...

    Java实现显示进度条

    ### Java 实现显示进度条 #### 背景与需求 在软件开发过程中,特别是涉及到长时间运行的任务时,向用户展示任务完成进度是一项非常实用的功能。进度条是实现这一功能的一种常见方式。本文将详细介绍如何使用Java...

    Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    Java的多态性是面向对象编程的一个核心特性,它允许我们使用父类(或接口)的引用指向子类(或实现接口的类)的对象。这样做的好处在于代码的灵活性和可扩展性,使得程序能够处理多种不同的对象类型,而不必关心具体...

Global site tag (gtag.js) - Google Analytics