一种插件调用方法、装置、电子设备及存储介质制造方法及图纸

技术编号:26689389 阅读:17 留言:0更新日期:2020-12-12 02:38
本发明专利技术实施例提供了一种插件调用方法、装置、电子设备及存储介质,所述方法包括:在检测到业务调用方发送的业务请求时,获取业务请求对应的业务框架的插件器;确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件;如果所述插件的执行方式为同步执行,则按照插件的顺序从插件仓库中调用对应插件的执行前逻辑;在所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射方式调用业务方法来执行正常业务逻辑;获取所述正常业务逻辑执行完成后的业务返回结果;将所述业务返回结果反馈给所述业务调用方。本发明专利技术实施例实现了无缝接入到不同的目标框架中,简化了业务开发量,节省了成本,以及提高了业务的性能。

【技术实现步骤摘要】
一种插件调用方法、装置、电子设备及存储介质
本专利技术涉及计算机
,特别是涉及一种插件调用方法、装置、电子设备及存储介质。
技术介绍
现有业务系统(比如租房、二手房、商业地产、小区、经纪人等)的web层与底层的基础微服务层等存在较多分散业务,日常工作避免不了根据业务需求频繁迭代。如此多的业务系统分布在了不同的子部门及更细化的开发小组中,大家都有一些共性的技术型需求,如接口监控、报警、容灾(灾备)、服务降级、过载保护等等,虽然现有的架构可以提供强大的服务管理平台,但是每个业务系统又有不同的需求,比如,在对现有系统不同框架(比如web框架或微服务框架等)进行开发或更新时,想要复用如接口监控,报警,容灾,服务降级和过载保护等这些功能时,由于大部分参数都写死在代码中,则需要对现有系统中不同框架或多或少的进行不同开发,没办法做到无缝接入待现有系统的不同框架中。所以,在对相关系统框架的开发中,由于大部分参数都写死在系统代码中,在接入目标框架的过程中,需要针对不同的目标框架采用不同的切入方案,则需要很多额外的开发量,没办法做到无缝接入;针对现有系统的开发,也无法满足所有框架,比如,支持web框架的无法支持微服务框架,支持了微服务框架的又不支持内部方法的直接调用等;如果接入过多需求,很多需求都是串行累加的,从而会导致业务性能大幅度降低,即降低了系统性能,有可能导致系统重构。因此,如何无缝接入到不同的目标框架,且简化业务开发的业务量,以及提高业务的性能,是目前有待解决的技术问题。
技术实现思路
>本专利技术实施例所要解决的技术问题是提供一种插件调用方法,以解决现有技术中由于不能无缝接入到不同的目标框架上,导致业务开发量大,成本增加,性能低的技术问题。相应的,本专利技术实施例还提供了一种插件调用装置、电子设备及存储介质,用以保证上述方法的实现及应用。为了解决上述问题,本专利技术是通过如下技术方案实现的:第一方面提供一种插件调用方法,所述方法包括:在检测到业务调用方发送的业务请求时,获取所述业务请求对应的业务框架的插件器;确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件;如果所述插件的执行方式为同步执行,则按照所述插件的顺序从插件仓库中调用对应插件的执行前逻辑;在所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射方式调用业务方法来执行正常业务逻辑;获取所述正常业务逻辑执行完成后的业务返回结果;将所述业务返回结果反馈给所述业务调用方第二方面提供一种插件调用装置,所述装置包括:第一获取模块,用于在检测到业务调用方发送的业务请求时,获取所述业务请求对应的业务框架的插件器;确定模块,用于确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件;第一调用模块,用于在所述确定模块确定所述插件的执行方式为同步执行时,按照所述插件的顺序从插件仓库中调用对应插件的执行前逻辑;第二调用模块,用于在每个所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射方式调用业务方法来执行正常业务逻辑;第二获取模块,用于获取所述正常业务逻辑执行完成后的业务返回结果;第一发送模块,用于将所述业务返回结果反馈给所述业务调用方。第三方面提供一种插件调用装置,所述装置包括:初始化模块,用于在检测到业务工程项目启动时,扫描所述业务工程项目所需的工程代码以及参数类目录,以及标记所述业务工程项目下所有插件注解的服务类及插件实现类,并将标记的所述插件注解的服务类和插件实现类发送到插件仓库模块中进行存储;框架切入模块,用于为待切入的每个业务工程项目创建插件器,将创建的所述每个业务工程项目的插件器切入到对应业务工程项目使用的业务框架中,以便于通过所述业务框架调用业务方法时正常调用对应的插件器;公共核心代理模块,用于在检测到业务调用方发送的业务请求时,通过所述框架切入模块获取到与所述业务请求对应的所述业务框架的插件器,以及确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件,以及在所述插件的执行方式为同步执行时,按照所述插件的顺序从所述插件仓库模块中调用对应插件的执行前逻辑,在所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射调用业务方法来执行所述正常业务逻辑;以及根据所述插件器的需求,则按照所述顺序的逆序从所述插件仓库中调用对应插件的执行后逻辑,在按照所述顺序的逆序执行完所述插件的执行后逻辑后,将执行后逻辑后得到的结果反馈给所述业务调用方;插件仓库模块,用于存储所述初始化模块扫描得到的业务工程项目所需的工程代码以及参数类目录,以及标记的所述插件注解的服务类和插件实现类的整体包,并通过插件同步执行实现接口和插件异步执行实现接口为所述公共核心代理模块提供对应的插件。第四方面提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的插件调用方法。第五方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被电子设备的处理器执行时实现如上所述的插件调用方法。第六方面,提供根据一种计算机程序产品,当所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行如上述所述的任一种插件调用方法。与现有技术相比,本专利技术实施例包括以下优点:本专利技术实施例中,在检测到业务调用方发送的业务请求时,获取所述业务请求对应的业务框架的插件器;确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件;如果所述插件的执行方式为同步执行,则按照所述插件的顺序从插件仓库中调用对应插件的执行前逻辑;在所述插件执行完成对应的执行前逻辑后,如果没有被拦截,则采用反射方式调用业务方法来执行正常业务逻辑;获取所述正常业务逻辑执行完成后的业务返回结果;将所述业务返回结果反馈给所述业务调用方。也就是说,本专利技术实施例中,一次性开发与接入,所有按标准开发后带有指定接口的插件注解和插件注解实现类的插件适用于所有业务框架,扩展插件依赖注解配置,由于各个插件之间互相不依赖,对业务系统侵入性近乎为零,实现了功能解耦,本实施例自定义插件开发,除插件仓库中的公共插件可以随便供大家使用外,使用者还可随时开发专属于自己业务的插件放到自己的工程项目中,插件器同样可以自动加载并运行。本专利技术实施例实现了无缝接入到不同的业务框架中,简少了业务开发量,节省了成本,以及提高了业务的性能。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本专利技术。附图说明图1是本本文档来自技高网...

【技术保护点】
1.一种插件调用方法,其特征在于,包括:/n在检测到业务调用方发送的业务请求时,获取所述业务请求对应的业务框架的插件器;/n确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件;/n如果所述插件的执行方式为同步执行,则按照所述插件的顺序从插件仓库中调用对应插件的执行前逻辑;/n在所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射方式调用业务方法来执行正常业务逻辑;/n获取所述正常业务逻辑执行完成后的业务返回结果;/n将所述业务返回结果反馈给所述业务调用方。/n

【技术特征摘要】
1.一种插件调用方法,其特征在于,包括:
在检测到业务调用方发送的业务请求时,获取所述业务请求对应的业务框架的插件器;
确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件;
如果所述插件的执行方式为同步执行,则按照所述插件的顺序从插件仓库中调用对应插件的执行前逻辑;
在所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射方式调用业务方法来执行正常业务逻辑;
获取所述正常业务逻辑执行完成后的业务返回结果;
将所述业务返回结果反馈给所述业务调用方。


2.根据权利要求1所述的方法,其特征在于,在每个所述插件的执行前逻辑执行完成后,所述方法还包括:
根据所述插件器的需求,判断是否需要调用正常业务逻辑;
如果需要,则执行所述采用反射方式调用业务方法来执行业务逻辑的步骤;
如果不需要,则拦截所述调用,并将调用异常结果反馈给所述业务调用方。


3.根据权利要求1或2所述的方法,其特征在于,在将所述业务返回结果反馈给所述业务调用方前,所述方法还包括:
根据所述插件器的需求,则按照所述顺序的逆序从所述插件仓库中调用对应插件的执行后逻辑;
按照所述逆序在每个所述插件执行完成对应的执行后逻辑后,将执行后逻辑完成后得到的结果反馈给所述业务调用方。


4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述插件的执行方式为异步执行,则将所述插件的功能存储到异步线程池中独立运行,以便于所述异常线程池通过插件器的上下文数据匹配每个插件的执行前逻辑和执行后逻辑,其中,所述上文数据至少包括:服务名称、业务方法名称、参数类型、参数值以及本次调用的会话标识sessionid。


5.根据权利要求1至4任一项所述的方法,其特征在于,在获取所述业务请求对应的业务框架的插件器前,所述方法还包括:
在检测到业务工程项目启动时,扫描所述业务工程项目所需的工程代码以及参数类目录;
标记所述业务工程项目下所有插件注解的服务类及插件实现类;
将标记的所述插件注解的服务类和插件实现类发送到插件仓库模块中进行存储。


6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
为待切入的每个业务工程项目创建插件器;
将创建的所述每个业务工程项目的插件器切入到对应的业务工程项目使用的业务框架中,以便于通过所述业务框架调用业务方法时能正常调用对应的插件器。


7.一种插件调用装置,其特征在于,包括:
第一获取模块,用于在检测到业务调用方发送的业务请求时,获取所述业务请求对应的业务框架的插件器;
确定模块,用于确定所述插件器需要执行的插件,所述插件包括一个插件或关联的多个插件,每个插件为实现了指定接口的插件注解和插件注解实现类的插件;
第一调用模块,用于在所述确定模块确定所述插件的执行方式为同步执行时,按照所述插件的顺序从插件仓库中调用对应插件的执行前逻辑;
第二调用模块,用于在每个所述插件执行完成对应的执行前逻辑后,如果需要调用正常业务逻辑,则采用反射方式调用业务方法来执行正常业务逻辑;
第二获取模块,用于获取所述正常业务逻辑执行完成后的业务返回结果;
第一发送模块,用于将所述业务返回结果反馈给所述业务调用方。


8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
判断模块,用于在每个所述插件的执行前逻辑执行完成后,根据所述插件器的需求,判断是否需要调用正常业务逻辑;
所述第二调用模块,还用于在所述判断模块判定所述需要调用正常业务逻辑时,采用反射方式调用业务方法来执行所述正常业务逻辑;
拦截模块,用于在所述判断模块判定所述不需要调用正常业务逻辑时,拦截所述调用;
第二发送模块,用于在所述拦截模块拦截后,将调用异常结果反馈给所述业务调用方。


9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
第三调用模块,用于在所述第一发送模块将所述业务返回结果反馈给所述业务调用方前,根据所述插件器的需求,则按照所述顺序的逆序从所述插件仓库中调用对应插件的执行后逻辑;
第三发送模块,用于按照所述逆序在每个所述插件执行完成对应的执行后逻辑后,将执行后逻辑完成后得到的结果反馈给所述业务调用方。


10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第四发送模块,用于在所述确定模块确定的所述插件的执行方式为异步执行时,将所述插件的功能存储到异步线程池中进行独立运行,以便于所述异常线程池通过插件器的上下文数据匹配每个插件的执行前逻辑和执行后逻辑,其中,所述上文数据至少包括:服务名...

【专利技术属性】
技术研发人员:马震
申请(专利权)人:北京五八信息技术有限公司
类型:发明
国别省市:北京;11

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

1