编写 以下 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是用于Java环境的GraphQL服务器实现。它定义了一个Schema,该Schema明确了可查询或变异的字段及其类型。有两种方式定义Schema: - **程序化方式**:通过Java代码直接创建GraphQL对象。例如,创建一个名...
在Java开发中,`graphql-java`库是实现GraphQL服务的一个流行选择,尤其当与Spring Boot结合时,可以创建高效且灵活的数据查询API。本篇文章将深入探讨如何在Spring Boot项目中使用`graphql-java`来搭建和运行...
Java 中的继承和实现接口是两个基本概念,extends 和 implements 是两个关键字,它们之间的区别是 Java 编程语言中最重要的基础知识。 extends 的作用 在 Java 中,extends 关键字用于继承父类,创建一个子类。在...
在 Java 中,接口的实现可以使用 implements 关键字来实现。例如,如果我们定义了一个接口 MyInterface,我们可以在某个类中使用 implements 关键字来实现该接口。例如: ```java public interface MyInterface { ...
Java 利用 DelayedQueue 实现本地的延迟队列 DelayedQueue 是 Java 中的一种特殊的阻塞队列,它用于存放实现了 Delayed 接口的对象。这种队列是有序的,即队头对象的延迟到期时间最长。 DelayedQueue 能够满足我们...
在 Java 中,extends 和 implements 是两个关键字,都是用来建立类与类或类与接口之间的关系的,但它们的使用场景和实现机制却有着很大的不同。 extends extends 关键字用于继承某个类,使得子类可以使用父类的...
Java语言实现的Kerberos允许开发者在Java应用中集成这种强大的安全机制。 **Java与Kerberos的结合** Java中的Kerberos支持主要体现在Java的`javax.security.auth.kerberos`包中,提供了与Kerberos协议交互的一系列...
Java SPI(Service Provider Interface)是Java平台提供的一种服务发现机制,允许JVM在运行时动态加载服务实现。这种机制使得应用程序能够与多个第三方组件进行交互,而无需在编译时硬编码具体的实现类。SPI机制的...
在Java中,有两种主要的方式来实现拦截器:一种是基于接口的JDK动态代理,另一种是基于类的CGLIB动态代理。这里我们将深入探讨这两种方式以及与责任链模式的关系。 首先,让我们理解什么是拦截器。拦截器是一种设计...
Java动态代理实现AOP Java动态代理是实现Aspect Oriented Programming(AOP)的重要手段。在Java中,动态代理可以通过java.lang.reflect InvocationHandler接口和java.lang.reflect.Proxy类来实现。AOP的主要思想...
在本实例中,我们将深入探讨如何使用Java实现多线程以实现异步调用,并理解其背后的机制。 首先,多线程允许一个程序同时执行多个任务。在Java中,我们可以通过继承`Thread`类或实现`Runnable`接口来创建线程。在这...
下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型中,“生产者”线程负责生成产品并放入“仓库”,而“消费者”线程则负责从仓库中取出产品并进行消费。...
Java作为一种跨平台的编程语言,提供了多种方法来实现远程控制功能。本篇文章将详细探讨如何使用Java来实现这一目标。 首先,我们需要理解Java中的远程方法调用(Remote Method Invocation,简称RMI)。RMI是Java...
Java提供了两种主要的动态代理实现方式:JDK自身的动态代理(基于接口)和Cglib库。 ### JDK动态代理 JDK动态代理是通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现的。Proxy类...
在Java编程语言中,接口(Interface)是一种定义行为规范的抽象类型,它允许类实现多个接口,从而实现多继承。接口通常包含一组抽象方法,这些方法没有具体实现,需要实现接口的类来提供具体的实现。在本例中,我们...
Java RMI(Remote Method Invocation)是Java平台提供的一种用于分布式计算的技术,它允许在不同的Java虚拟机之间调用方法,从而实现远程对象的交互。在本场景中,我们利用Java RMI来实现实时的远程文件下载功能。...
### Java 实现显示进度条 #### 背景与需求 在软件开发过程中,特别是涉及到长时间运行的任务时,向用户展示任务完成进度是一项非常实用的功能。进度条是实现这一功能的一种常见方式。本文将详细介绍如何使用Java...
Java的多态性是面向对象编程的一个核心特性,它允许我们使用父类(或接口)的引用指向子类(或实现接口的类)的对象。这样做的好处在于代码的灵活性和可扩展性,使得程序能够处理多种不同的对象类型,而不必关心具体...