CN111324343A - 代码生成方法以及装置 - Google Patents
代码生成方法以及装置 Download PDFInfo
- Publication number
- CN111324343A CN111324343A CN202010103808.8A CN202010103808A CN111324343A CN 111324343 A CN111324343 A CN 111324343A CN 202010103808 A CN202010103808 A CN 202010103808A CN 111324343 A CN111324343 A CN 111324343A
- Authority
- CN
- China
- Prior art keywords
- template
- code
- user
- code generation
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本说明书实施例提供代码生成方法以及装置,其中所述代码生成方法包括:从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包;展示所述jar包提供的方法,以便用户从中选择需要使用的方法;根据被选择的方法,解析所述jar包中的接口信息;将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;通过所述模板引擎渲染所述代码生成模板,生成所述代码。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种代码生成方法。本说明书一个或者多个实施例同时涉及一种代码生成装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
在微服务架构下的分布式系统中,一项完整的业务能力往往由若干项服务共同协作完成。其中,RPC服务需要由微服务架构中的服务接入层来对接调用。在这种架构下,技术人员在开发过程中需要在服务接入层频繁编写调用下游RPC服务的代码。这些服务接入层的代码的编写,在开发过程中占用了开发人员一定的时间和精力,造成了开发效率低下的问题。
为了提升开发效率,需要帮助开发人员自动生成服务接入层的代码,提升开发效率,降低人力成本。
发明内容
有鉴于此,本说明书施例提供了一种代码生成方法。本说明书一个或者多个实施例同时涉及一种代码生成装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种代码生成方法,包括:从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包;展示所述jar包提供的方法,以便用户从中选择需要使用的方法;根据被选择的方法,解析所述jar包中的接口信息;将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;通过所述模板引擎渲染所述代码生成模板,生成所述代码。
可选地,所述将所述接口信息输入到预设的代码生成模板中包括:展示两种参数构造模式,以便用户从中选择需要的参数构造模式;其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述;将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
可选地,还包括:读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述;将所述jar包中的接口名称输入到所述声明文件模板中;通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
可选地,还包括:将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。
可选地,所述模板引擎包括:velocity、freemarker或beetl。
根据本说明书实施例的第二方面,提供了一种代码生成装置,包括:下载模块,被配置为从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包。方法展示模块,被配置为展示所述jar包提供的方法,以便用户从中选择需要使用的方法。解析模块,被配置为根据被选择的方法,解析所述jar包中的接口信息。输入模块,被配置为将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法。渲染模块,被配置为通过所述模板引擎渲染所述代码生成模板,生成所述代码。
可选地,所述输入模块包括:模式展示子模块,展示两种参数构造模式,以便用户从中选择需要的参数构造模式。其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述。输入子模块,被配置为将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
可选地,还包括:声明读取模块,被配置为读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述。声明输入模块,被配置为将所述jar包中的接口名称输入到所述声明文件模板中。声明渲染模块,被配置为通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
可选地,还包括:代码注入模块,被配置为将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包;展示所述jar包提供的方法,以便用户从中选择需要使用的方法;根据被选择的方法,解析所述jar包中的接口信息;将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;通过所述模板引擎渲染所述代码生成模板,生成所述代码。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现本说明书实施例第一方面中任一实施例所述代码生成方法的步骤。
本说明书一个实施例实现了代码生成方法,该方法从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包,展示所述jar包提供的方法,以便用户从中选择需要使用的方法,根据被选择的方法,解析所述jar包中的接口信息,将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,通过所述模板引擎渲染所述代码生成模板,根据所述接口信息生成用于调用所述被选择的方法的代码,无需用户对调用RPC服务的代码进行编写,实现了分布式系统中服务接入层的代码生成,极大地提高了服务接入层的开发效率。
附图说明
图1是本说明书一个实施例提供的一种代码生成方法的流程图;
图2是本说明书一个实施例提供的一种代码生成方法的处理过程流程图;
图3是本说明书一个实施例提供的一种代码生成装置的结构示意图;
图4是本说明书另一个实施例提供的一种代码生成装置的结构示意图;
图5是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本说明书中,提供了一种代码生成方法,本说明书同时涉及一种代码生成装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种代码生成方法的流程图,包括步骤102至步骤110。
步骤102:从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包。
RPC:RPC(Remote Procedure Call,远程过程调用),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
mvn(Maven)坐标,Maven是一个跨平台的项目管理和构建工具,主要用于基于Java平台的项目构建,管理项目jar包。在mvn仓库中,由mvn坐标和RPC服务名称来标识一个jar包。
例如,根据本说明书实施例的代码生成方法实现的代码生成器可以提供用于用户设置待引入RPC服务的mvn坐标和RPC服务名称的界面,以便用户进行相应设置,读取用户设置的待引入RPC服务的mvn坐标和RPC服务名称,从mvn仓库下载该mvn坐标和RPC服务名称对应的jar包。其中,所述jar包的下载可以采用aether完成,也可以使用httpclient直接自行实现下载的功能。
步骤104:展示所述jar包提供的方法,以便用户从中选择需要使用的方法。
在下载了jar包之后,可以相应对其进行解析,获取该jar包接口提供的方法,将方法列表呈现给用户,供用户自行选择所需使用的方法。其中,不同的方法对应不同的RPC服务内容。
步骤106:根据用户选择的方法,解析所述jar包中的接口信息。
例如,可以根据用户选择的方法,解析jar中的接口名称、注释信息、接口入参、接口返回类型等任一个或多个接口信息。
步骤108:将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法。
本说明书实施例中,对于代码生成模板所采用的模板引擎并不进行限制。例如,可以采用velocity、freemarker或beetl中的任一种。根据模板引擎,使用其允许的模板语言在代码生成模板中对根据所述接口信息生成的代码进行描述。描述可以包括对所生成的代码中的静态信息的描述以及动态信息的描述。其中,静态信息可以包括用于调用RPC服务的一般常规的代码串,动态信息可以包括需要根据不同RPC服务相应输入的接口信息、参数等。
步骤110:通过所述模板引擎渲染所述代码生成模板,生成所述代码。
例如,所生成的代码可以包括用于调用被选择的方法的实现类。为了使生成的代码更加的简洁优雅,本说明书一实施例中,生成的代码包括Client接口和Client接口的实现类。其中,Client接口实现类中完成下游RPC服务被选择的方法的调用。Client接口实现类还可以用于完成调用失败等异常的处理。
为了进一步减少用户代码编写量,本说明书实施例还提供了自动生成用于声明RPC服务的代码的实现方式。具体地,可以读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言例如XML语言对根据接口名称生成用于声明RPC服务的代码进行描述;将所述jar包中的接口名称输入到所述声明文件模板中;通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
基于上述实施方式,还可以将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中,从而进一步减少用户的操作,提高开发效率。
可见,根据本说明书实施例提供的代码生成方法,由于该方法从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包,展示所述jar包提供的方法,以便用户从中选择需要使用的方法,根据被选择的方法,解析所述jar包中的接口信息,将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,通过所述模板引擎渲染所述代码生成模板,根据所述接口信息生成用于调用所述被选择的方法的代码,无需用户对调用RPC服务的代码进行编写,极大地提高了服务接入层的开发效率。
为了便于覆盖更多的使用场景,可以根据RPC服务接口所需要传入的参数的构造的复杂程度,设置不同的参数构造模式。下述结合附图2,以本说明书提供的代码生成方法展示两种参数构造模式的应用为例,对所述代码生成方法进行进一步说明。其中,图2示出了本说明书一个实施例提供的一种代码生成方法的处理过程流程图,具体步骤包括步骤202至步骤212。
步骤202:从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包。
步骤204:展示所述jar包提供的方法,以便用户从中选择需要使用的方法。
步骤206:展示两种参数构造模式,以便用户从中选择需要的参数构造模式。
其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式。所述两种参数构造模式分别对应不同的代码生成模板。
所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述。选择了该用户自定义参数构造模式,用户可以在上层代码模块中完成调用下游RPC服务所需的参数组装,通过该用户自定义参数构造模式相应的代码生成模板,在服务接入层负责对用户自定义的参数构造进行透传。若下游服务提供的接口包含较多的参数,为了提升所生成代码的可读性,用户可选择该种参数构造模式。
所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述。由于不同RPC服务对应的参数构造可能存在区别,本说明书一实施例,可以预先配置不同RPC服务各自对应的自动生成的参数构造,根据用户选择的方法,自动选用相应的参数构造。通过该自动生成参数构造模式相应的代码生成模板在服务接入层完成调用下游所需参数的组装。若下游服务提供的接口所包含的参数较少,那么用户可以选择该种参数构造模式。
步骤208:根据被选择的方法,解析所述jar包中的接口信息。
步骤210:将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
步骤212:通过所述模板引擎渲染所述代码生成模板,生成所述代码。
可见,通过该实施方式可以覆盖更多使用场景,由用户根据参数构造的复杂程度来选择相应的参数构造模式,自动采用相应的代码生成模板生成具有对应参数构造的代码,减少了用户对参数构造的编写,进一步有效提高了开发效率。
与上述方法实施例相对应,本说明书还提供了代码生成装置实施例,图3示出了本说明书一个实施例提供的一种代码生成装置的结构示意图。如图3所示,该装置包括:下载模块302、方法展示模块304、解析模块306、输入模块308及渲染模块310。
该下载模块302,可以被配置为从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包。
该方法展示模块304,可以被配置为展示所述jar包提供的方法,以便用户从中选择需要使用的方法。
该解析模块306,可以被配置为根据被选择的方法,解析所述jar包中的接口信息。
该输入模块308,可以被配置为将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法。
该渲染模块310,可以被配置为通过所述模板引擎渲染所述代码生成模板,生成所述代码。
可见,根据本说明书实施例提供的代码生成装置,由于该装置从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包,展示所述jar包提供的方法,以便用户从中选择需要使用的方法,根据被选择的方法,解析所述jar包中的接口信息,将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,通过所述模板引擎渲染所述代码生成模板,根据所述接口信息生成用于调用所述被选择的方法的代码,无需用户对调用RPC服务的代码进行编写,极大地提高了服务接入层的开发效率。
为了便于覆盖更多的使用场景,可以根据RPC服务接口所需要传入的参数的构造的复杂程度,设置不同的参数构造模式。下述结合附图4,以本说明书提供的代码生成装置在覆盖不同场景中的应用为例,对所述代码生成装置进行进一步说明。其中,图4示出了本说明书另一个实施例提供的一种代码生成装置的结构示意图。该装置中,所述输入模块308包括:模式展示子模块3082及输入子模块3084。
该模式展示子模块3082,可以展示两种参数构造模式,以便用户从中选择需要的参数构造模式。
其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述。
该输入子模块3084,可以被配置为将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
可见,通过该实施方式可以覆盖更多使用场景,由用户根据参数构造的复杂程度来选择相应的参数构造模式,自动采用相应的代码生成模板生成具有对应参数构造的代码,减少了用户对参数构造的编写,进一步有效提高了开发效率。
为了进一步减少用户代码编写量,本说明书实施例还提供了自动生成用于声明RPC服务的代码的实现方式。可选地,如图4所示,该装置还可以包括:声明读取模块312、声明输入模块314及声明渲染模块316。
该声明读取模块312,可以被配置为读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述。
该声明输入模块314,可以被配置为将所述jar包中的接口名称输入到所述声明文件模板中。
该声明渲染模块316,可以被配置为通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
基于上述实施方式,可选地,该装置还可以包括:代码注入模块318,可以被配置为将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。通过该实施方式,进一步减少用户的操作,提高开发效率。
上述为本实施例的一种代码生成装置的示意性方案。需要说明的是,该代码生成装置的技术方案与上述的代码生成方法的技术方案属于同一构思,代码生成装置的技术方案未详细描述的细节内容,均可以参见上述代码生成方法的技术方案的描述。
图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
其中,处理器520用于执行如下计算机可执行指令:
展示所述jar包提供的方法,以便用户从中选择需要使用的方法;根据被选择的方法,解析所述jar包中的接口信息;将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;通过所述模板引擎渲染所述代码生成模板,生成所述代码。
可选地,所述将所述接口信息输入到预设的代码生成模板中包括:展示两种参数构造模式,以便用户从中选择需要的参数构造模式;其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述;将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
可选地,还包括:读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述;将所述jar包中的接口名称输入到所述声明文件模板中;通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
可选地,还包括:将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。
可选地,所述模板引擎包括:velocity、freemarker或beetl。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的代码生成方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述代码生成方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
展示所述jar包提供的方法,以便用户从中选择需要使用的方法;根据被选择的方法,解析所述jar包中的接口信息;将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;通过所述模板引擎渲染所述代码生成模板,生成所述代码。
可选地,所述将所述接口信息输入到预设的代码生成模板中包括:展示两种参数构造模式,以便用户从中选择需要的参数构造模式;其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述;将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
可选地,还包括:读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述;将所述jar包中的接口名称输入到所述声明文件模板中;通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
可选地,还包括:将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。
可选地,所述模板引擎包括:velocity、freemarker或beetl。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的代码生成方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述代码生成方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (11)
1.一种代码生成方法,包括:
从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包;
展示所述jar包提供的方法,以便用户从中选择需要使用的方法;
根据被选择的方法,解析所述jar包中的接口信息;
将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;
通过所述模板引擎渲染所述代码生成模板,生成所述代码。
2.根据权利要求1所述的方法,其中,所述将所述接口信息输入到预设的代码生成模板中包括:
展示两种参数构造模式,以便用户从中选择需要的参数构造模式;
其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述;
将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
3.根据权利要求1所述的方法,还包括:
读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述;
将所述jar包中的接口名称输入到所述声明文件模板中;
通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
4.根据权利要求3所述的方法,还包括:
将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。
5.根据权利要求1所述的方法,所述模板引擎包括:
velocity、freemarker或beetl。
6.一种代码生成装置,包括:
下载模块,被配置为从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包;
方法展示模块,被配置为展示所述jar包提供的方法,以便用户从中选择需要使用的方法;
解析模块,被配置为根据被选择的方法,解析所述jar包中的接口信息;
输入模块,被配置为将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;
渲染模块,被配置为通过所述模板引擎渲染所述代码生成模板,生成所述代码。
7.根据权利要求6所述的装置,其中,所述输入模块包括:
模式展示子模块,展示两种参数构造模式,以便用户从中选择需要的参数构造模式;
其中,所述两种参数构造模式包括用户自定义参数构造模式及自动生成参数构造模式,所述两种参数构造模式分别对应不同的代码生成模板,所述用户自定义参数构造模式对应的代码生成模板中包括从上层代码模块中获取用户自定义参数构造的描述,所述自动生成参数构造模式对应的代码生成模板中包括对模板自动生成的参数构造的描述;
输入子模块,被配置为将所述接口信息输入到用户选择的参数构造模式对应的代码生成模板中。
8.根据权利要求6所述的装置,还包括:
声明读取模块,被配置为读取用于声明RPC服务的声明文件模板,所述声明文件模板中由所述模板引擎允许的模板语言对根据接口名称生成用于声明RPC服务的代码进行描述;
声明输入模块,被配置为将所述jar包中的接口名称输入到所述声明文件模板中;
声明渲染模块,被配置为通过所述模板引擎渲染所述声明文件模板,生成用于声明RPC服务的代码。
9.根据权利要求8所述的装置,还包括:
代码注入模块,被配置为将所述用于调用所述被选择的方法的代码及用于声明RPC服务的代码注入到用户设置的项目工程中。
10.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
从mvn仓库下载用户设置的mvn坐标和RPC服务名称对应的jar包;
展示所述jar包提供的方法,以便用户从中选择需要使用的方法;
根据被选择的方法,解析所述jar包中的接口信息;
将所述接口信息输入到预设的代码生成模板中,其中,所述代码生成模板中由模板引擎允许的模板语言对根据所述接口信息生成的代码进行描述,所述代码用于调用所述被选择的方法;
通过所述模板引擎渲染所述代码生成模板,生成所述代码。
11.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求1至5任意一项所述代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103808.8A CN111324343B (zh) | 2020-02-20 | 2020-02-20 | 代码生成方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103808.8A CN111324343B (zh) | 2020-02-20 | 2020-02-20 | 代码生成方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324343A true CN111324343A (zh) | 2020-06-23 |
CN111324343B CN111324343B (zh) | 2022-03-25 |
Family
ID=71168795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010103808.8A Active CN111324343B (zh) | 2020-02-20 | 2020-02-20 | 代码生成方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324343B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965832A (zh) * | 2021-02-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种远程过程调用rpc服务调用方法和相关装置 |
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN113760352A (zh) * | 2021-07-01 | 2021-12-07 | 北京房江湖科技有限公司 | 代码文件生成方法、电子设备、存储介质及程序产品 |
CN114741074A (zh) * | 2022-02-07 | 2022-07-12 | 阿里巴巴(中国)有限公司 | 代码生成方法、装置、电子设备、介质及程序产品 |
CN117519670A (zh) * | 2023-12-25 | 2024-02-06 | 杭银消费金融股份有限公司 | 一种自动化生成rpc代码的方法及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273792A1 (en) * | 1998-09-25 | 2005-12-08 | Shigekazu Inohara | Method for optimizing remote procedure call (RPC) and program execution method by use of the optimized RPC |
US20090064096A1 (en) * | 2007-08-29 | 2009-03-05 | Sap Ag | System and methods for tracing code generation in template engines |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
CN103235718A (zh) * | 2013-03-28 | 2013-08-07 | 迈普通信技术股份有限公司 | 一种远程过程调用rpc代码生成的方法及装置 |
CN104035754A (zh) * | 2013-03-05 | 2014-09-10 | 北大方正集团有限公司 | 一种基于xml的自定义代码生成方法及生成器 |
CN104965714A (zh) * | 2015-07-27 | 2015-10-07 | 广州杰赛科技股份有限公司 | 应用软件的代码生成方法和系统 |
CN108563435A (zh) * | 2018-04-19 | 2018-09-21 | 北京百度网讯科技有限公司 | 代码生成的方法及装置 |
CN109062568A (zh) * | 2018-06-19 | 2018-12-21 | 链家网(北京)科技有限公司 | 一种项目生成方法及工具 |
CN110502242A (zh) * | 2019-08-26 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 代码自动生成方法、装置、计算机设备及存储介质 |
CN110806862A (zh) * | 2019-10-12 | 2020-02-18 | 上海巍驰信息技术有限公司 | 一种基于配置模型自动生成接口程序代码的系统 |
-
2020
- 2020-02-20 CN CN202010103808.8A patent/CN111324343B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273792A1 (en) * | 1998-09-25 | 2005-12-08 | Shigekazu Inohara | Method for optimizing remote procedure call (RPC) and program execution method by use of the optimized RPC |
US20090064096A1 (en) * | 2007-08-29 | 2009-03-05 | Sap Ag | System and methods for tracing code generation in template engines |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
CN104035754A (zh) * | 2013-03-05 | 2014-09-10 | 北大方正集团有限公司 | 一种基于xml的自定义代码生成方法及生成器 |
CN103235718A (zh) * | 2013-03-28 | 2013-08-07 | 迈普通信技术股份有限公司 | 一种远程过程调用rpc代码生成的方法及装置 |
CN104965714A (zh) * | 2015-07-27 | 2015-10-07 | 广州杰赛科技股份有限公司 | 应用软件的代码生成方法和系统 |
CN108563435A (zh) * | 2018-04-19 | 2018-09-21 | 北京百度网讯科技有限公司 | 代码生成的方法及装置 |
CN109062568A (zh) * | 2018-06-19 | 2018-12-21 | 链家网(北京)科技有限公司 | 一种项目生成方法及工具 |
CN110502242A (zh) * | 2019-08-26 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 代码自动生成方法、装置、计算机设备及存储介质 |
CN110806862A (zh) * | 2019-10-12 | 2020-02-18 | 上海巍驰信息技术有限公司 | 一种基于配置模型自动生成接口程序代码的系统 |
Non-Patent Citations (3)
Title |
---|
10KM: "生成RPC调用client的代码生成器", 《HTTPS://GITEE.COM/L0KM/CODEGEN/TREE/CODEGEN-1.0.30/CODEGEN-THRIFT》 * |
卖单词谋生: "读取指定jar包 解析jar包中所有的类(获取到类的方法和属性)", 《HTTPS://WWW.CNBLOGS.COM/HUANGZHIMIN/P/6496562.HTML》 * |
林钰杰等: "基于FreeMarker的企业Web应用代码生成器研究", 《信息技术》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965832A (zh) * | 2021-02-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种远程过程调用rpc服务调用方法和相关装置 |
CN112965832B (zh) * | 2021-02-18 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 一种远程过程调用rpc服务调用方法和相关装置 |
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN113760352A (zh) * | 2021-07-01 | 2021-12-07 | 北京房江湖科技有限公司 | 代码文件生成方法、电子设备、存储介质及程序产品 |
CN114741074A (zh) * | 2022-02-07 | 2022-07-12 | 阿里巴巴(中国)有限公司 | 代码生成方法、装置、电子设备、介质及程序产品 |
CN117519670A (zh) * | 2023-12-25 | 2024-02-06 | 杭银消费金融股份有限公司 | 一种自动化生成rpc代码的方法及系统 |
CN117519670B (zh) * | 2023-12-25 | 2024-04-09 | 杭银消费金融股份有限公司 | 一种自动化生成rpc代码的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111324343B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324343B (zh) | 代码生成方法以及装置 | |
CN109358936B (zh) | 信息处理方法、装置、存储介质、电子设备及系统 | |
RU2595890C2 (ru) | Способ и устройство для исполнения команд действий пользователя | |
CN109445784B (zh) | 结构数据的处理方法、装置、存储介质及电子设备 | |
US11200033B2 (en) | Application programming interface (API) based object oriented software development and textual analysis | |
CN111580879A (zh) | 小程序的运行方法、装置、电子设备及计算机存储介质 | |
CN109240697B (zh) | 调用处理方法及装置、存储介质 | |
US20220414971A1 (en) | Method of processing information, method of rendering image, and electronic device | |
CN111949324B (zh) | 一种分布式序列号生成方法和装置 | |
CN114138372B (zh) | 前端组件加载方法及装置 | |
US20110320286A1 (en) | System And Method For Integrating An Ad Banner With A Calling Application | |
CN110730428B (zh) | 短信点击数据获取方法、装置、电子设备及存储介质 | |
CN115617420A (zh) | 应用程序的生成方法、装置、设备以及存储介质 | |
CN114443905A (zh) | 接口文档更新方法、装置、电子设备及可读存储介质 | |
CN112243016A (zh) | 一种中间件平台、终端设备、5g人工智能云处理系统及处理方法 | |
CN112631482A (zh) | 页面处理方法及装置 | |
CN117540805A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112559293A (zh) | 应用程序包的监控方法及装置 | |
CN115525260A (zh) | 一种基于protobuf的代码生成方法和装置 | |
CN114153547B (zh) | 管理页面显示方法及装置 | |
CN113296975A (zh) | 服务调用方法及装置 | |
CN113961279A (zh) | 页面渲染方法、装置、服务器和存储介质 | |
CN113934477A (zh) | 主题渲染方法、装置、电子设备和计算机可读存储介质 | |
CN110975287A (zh) | 一种基于Unity3D的组件优化方法及装置 | |
US11456983B2 (en) | Interactive operation method, and transmitter machine, receiver machine and interactive operation system using the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211217 Address after: Room 602, No. 618, Wai Road, Huangpu District, Shanghai 200010 Applicant after: Ant fortune (Shanghai) Financial Information Service Co., Ltd Address before: 801-11, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province, 310013 Applicant before: Alipay (Hangzhou) Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |