基于GraphQL减免软件研发配置的工具和方法技术

技术编号:34080303 阅读:52 留言:0更新日期:2022-07-11 18:42
本申请公开了基于GraphQL减免软件研发配置的工具和方法,基于Spring框架命令模式回调处理数据,进行初始化;初始化Velocity模板引擎相关环境变量,生成指定形式的模板文件;通过Spring上下文扫描JPA框架数据持久层获取所有持久化对象信息;基于持久化对象信息循环生成对应的schema以及DataFetcher,发布注册事件,监听事件生成GraphQL的schema以及DataFetcher。解决了EntityInfo查询序列化层级问题,并且在产品运行时动态生成相关的Schema以及DataFetcher文件的工具框架,从而帮助开发更快的实现产品需求,满足低代码要求。求。求。

【技术实现步骤摘要】
基于GraphQL减免软件研发配置的工具和方法


[0001]本申请属于软件研发领域,具体涉及基于GraphQL减免软件研发配置的工具和方法。

技术介绍

[0002]众所周知Spring应用需要进行大量的配置,各种XML配置和注解配置让人眼花缭乱,且极容易出错,因此Spring一度被称为“配置地狱”。此处也不再赘述SpringBoot的一些优点,因为本产品或项目以及本工具的研发也是离不开SpringBoot的相关基础。
[0003]主要是使用其提供starter简化Maven配置,SpringBoot提供了一系列的“starter”项目对象模型(POMS)来简化Maven配置,此次的GraphQL相关的Starter基础包也是基于SpringBoot进行引入,同时本次研发的工具也同样基于Starter实现。
[0004]GraphQL即是一种用于API的查询语言也是一个满足你数据查询的运行时。GraphQL对你的API中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让API更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
[0005]在使用GraphQL时,只需要向API发出一个GraphQL请求就能准确获得你想要的数据,不多不少。GraphQL查询总是返回可预测的结果。
[0006]GraphQL查询不仅能够获得资源的属性,还能沿着资源间引用进一步查询。典型的RESTAPI请求多个资源时得载入多个URL,而GraphQL可以通过一次请求就获取你应用所需的所有数据。这样一来,即使是比较慢的移动网络连接下,使用GraphQL的应用也能表现得足够迅速。
[0007]GraphQLAPI基于类型和字段的方式进行组织,而非入口端点。你可以通过一个单一入口端点得到你所有的数据能力。GraphQL使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。
[0008]以上是GraphQL的一些特性,以上的特性能够解决我们在产品以及项目研发过程中减少一些定制化的Restful相关的API编写,同时还可以解决实体的序列化层级加载问题。但在使用GraphQL时离不开其繁琐的一些定义文件,就是Schema文件的定义,而且目前实现编写定义文件的方式为,提供工具工程,扫描指定包名下对应的实体生成对应的Schema以及DataFetcher文件,由用户手动拷贝至本人所维护工程才可加载,导致维护过多模板生成类的问题。
[0009]Velocity是一个基于Java的模板引擎,其提供了一个Context容器,在java代码里面我们可以往容器中存值,然后在vm文件中使用特定的语法获取,这是Velocity基本的用法,其与jsp、freemarker并称为三大视图展现技术,Velocity还有一些其他用途,比如源代码生成等。

技术实现思路

[0010]本申请提出了基于GraphQL减免软件研发配置的工具和方法,基于Spring框架命令模式回调处理数据,初始化Velocity模板引擎相关环境变量,发布注册事件,生成GraphQL的schema以及DataFetcher。
[0011]为实现上述目的,本申请提供了如下方案:基于GraphQL减免软件研发配置的工具,具体包括以下内容:包括:初始化模块、模板引擎生成模块、持久化对象信息模块、数据结构生成模块和发布注册模块;所述初始化模块用于基于Spring框架命令模式回调处理数据,进行Spring框架初始化;所述模板引擎生成模块用于基于初始化后的所述Spring框架,通过Velocity模板引擎生成指定形式的模板文件;所述持久化对象信息模块用于基于所述模板文件通过Spring上下文扫描JPA框架数据持久层获取持久化对象信息;所述数据结构生成模块用于基于持久化对象信息循环生成对应的schema以及DataFetcher;所述schema是用于GraphQL定义数据结构及对象关系;所述DataFetcher是用于GraphQL中具体查询适配对应的接口;所述发布注册模块用于发布注册事件,监听事件生成GraphQL的schema以及DataFetcher。
[0012]优选的,所述初始化模块进行所述Spring框架初始化的方法包括:通过Spring框架命令模式回调处理数据,作为对应文件注册的入口方法,生成配置类以及所述模板文件。
[0013]优选的,所述模板引擎生成模块生成指定形式的模板文件方法包括:用于初始化Velocity模板引擎相关环境变量,指定动态生成的SDL文件存放所需类加载器,指定读取或输出字符集。
[0014]优选的,所述发布注册模块进行发布注册的方法包括:不存在本地自定义的schema以及DataFetcher,则发布注册事件,并监听事件生成GraphQL的schema以及DataFetcher。
[0015]优选的,所述持久化对象信息模块进行所述持久化对象处理的方法包括:通过Spring上下文获取所有继承JpaDao接口的实体接口类,根据实体生成对应EntityInfo,最后按照接口类编码进行全局缓存EntityInfo信息;所述JpaDao是 JPA定义实体查询数据库交互层;所述EntityInfo是自定义实体对象相关信息,包含实体类名,属性及引用对象属性集合。
[0016]为了更好的实现上述内容,本申请还提出基于GraphQL减免软件研发配置的方法,具体包括:基于Spring框架命令模式回调处理数据,进行Spring框架初始化;基于所述Spring框架初始化,通过Velocity模板引擎生成指定形式的模板文件;基于所述模板文件通过Spring上下文扫描JPA框架数据持久层获取持久化对象信息;
基于持久化对象信息循环生成对应的schema以及DataFetcher;所述schema是用于GraphQL定义数据结构及对象关系;所述DataFetcher是用于GraphQL中具体查询适配对应的接口;发布注册事件,监听事件生成GraphQL的schema以及DataFetcher。
[0017]优选的,进行所述Spring框架初始化的方法包括:通过Spring框架命令模式回调处理数据,作为对应文件注册的入口方法,用于执行生成配置类以及所述模板文件。
[0018]优选的,所述模板引擎进行生成指定形式的模板文件的方法包括:初始化Velocity模板引擎相关环境变量,指定动态生成的SDL文件存放所需类加载器,指定读取或输出字符集。
[0019]优选的,进行所述持久化对象处理的方法包括:通过Spring上下文获取所有继承JpaDao接口的实体接口类,根据实体生成对应EntityInfo,最后按照接口类编码进行全局缓存EntityInfo信息;所述JpaDao是JPA定义实体查询数据库交互层;所述EntityInfo是自定义实体对象相关信息,包含实体类名,属性及引用对象属性集合。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于GraphQL减免软件研发配置的工具,其特征在于,包括:初始化模块、模板引擎生成模块、持久化对象信息模块、数据结构生成模块和发布注册模块;所述初始化模块用于基于Spring框架命令模式回调处理数据,进行Spring框架初始化;所述模板引擎生成模块用于基于初始化后的所述Spring框架,通过Velocity模板引擎生成指定形式的模板文件;所述持久化对象信息模块用于基于所述模板文件通过Spring上下文扫描JPA框架数据持久层获取持久化对象信息;所述数据结构生成模块用于基于所述持久化对象信息循环生成对应的schema以及DataFetcher;所述schema是用于GraphQL定义数据结构及对象关系;所述DataFetcher是用于GraphQL中具体查询适配对应的接口;所述发布注册模块用于发布注册事件,监听事件生成GraphQL的schema以及DataFetcher。2.如权利要求1所述基于GraphQL减免软件研发配置的工具,其特征在于,所述初始化模块进行所述Spring框架初始化的方法包括:通过Spring框架命令模式回调处理数据,作为对应文件注册的入口方法,生成配置类以及所述模板文件。3.如权利要求1所述基于GraphQL减免软件研发配置的工具,其特征在于,所述模板引擎生成模块生成所述指定形式的模板文件方法包括:初始化Velocity模板引擎相关环境变量,指定动态生成的SDL文件存放所需类加载器,指定读取或输出字符集。4.如权利要求1所述基于GraphQL减免软件研发配置的工具,其特征在于,所述发布注册模块进行发布注册的方法包括:不存在本地自定义的schema以及DataFetcher,则发布注册事件,并监听事件生成GraphQL的schema以及DataFetcher。5.如权利要求1所述基于GraphQL减免软件研发配置的工具,其特征在于,所述持久化对象信息模块进行所述持久化对象处理的方法包括:通过Spring上下文获取所有继承JpaDao接口的实体接口类,根据实体生成对应EntityInfo,最后按照接口类编码进行全局缓存EntityInfo信息;所述JpaDao是JPA定义...

【专利技术属性】
技术研发人员:杨孟石必顺李飞张超群张瀚宇侯斌峰
申请(专利权)人:奇秦科技北京股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1