一种插件快速接入方法、设备及存储介质与流程

文档序号:33183703发布日期:2023-02-04 05:40阅读:40来源:国知局
一种插件快速接入方法、设备及存储介质与流程

1.本发明涉及插件接入技术领域,尤其是涉及一种插件快速接入方法、设备及存储介质。


背景技术:

2.目前市场上的存在着各种不同的通信协议。各运营商的通信协议不相同,同一个运营商的不同消息类型的协议也不相同。为了实现各种协议的接入,都是采用硬编码的方式进行的,每接入一个新的协议都要对整个的接入流程实现一遍,对已有的系统形成了入侵,存在现有功能受损的风险。每次都要对现有的系统进行修改的方式来对接新的协议,系统变更的风险无法确定,企业的人力成本也会显著增加。


技术实现要素:

3.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种插件快速接入方法、设备及存储介质,能够做到通信协议以插件的方式进行插拔,而不会影响到已有的系统流程。
4.第一方面,本发明的实施例提供了一种插件快速接入方法,所述插件快速接入方法包括:
5.统一定义通信渠道的插件接口;
6.定义spi全限定配置文件的目录和名称;所述名称为所述通信渠道的插件接口的全路径;
7.启动项目时,查找所述项目下的所述spi全限定配置文件的目录及目录下的与所述名称符合的规则文件;
8.解析所述规则文件,获取所述通信渠道的插件接口的实现类路径;
9.根据所述实现类路径进行反射加载,得到所述实现类路径对应的对象;
10.选取所述实现类路径中被标记的实现类方法的属性注入所述对象内,并将完成所述属性注入的实现类方法缓存。
11.根据本发明实施例的方法,至少具有如下有益效果:
12.本方法首先通过统一定义通信渠道的插件接口,后续开发只用开发插件包,节省了开发的时间成本和人力成本;然后通过定义spi全限定配置文件的目录和名称实现了居于特定基础类的组件加载,能使插件接入更加灵活;启动项目,通过查找全限定配置文件,获取实现类路径并生成实现类对象,选取实现类路径中被标记的实现类方法的属性注入对象,实现了接入新的通信渠道不需要对现有系统修改,只需要修改插件包的内容,避免了系统变更所带来的风险。
13.根据本发明的一些实施例,所述统一定义通信渠道的插件接口,包括:
14.获取所述通信渠道涉及的流程;所述流程包括信息发送、发送结果接收、回复消息接收、链接维持心跳和登录;
15.根据所述流程统一定义所述插件接口的请求的协议转换和所述插件接口的响应消息的协议转换。
16.根据本发明的一些实施例,根据所述实现类路径进行反射加载得到所述实现类路径对应的对象,包括:
17.根据所述实现类路径获取所述实现类路径对应的字节码文件;
18.根据所述字节码文件进行反射,得到所述实现类路径对应的对象。
19.根据本发明的一些实施例,选取所述实现类路径中被标记的实现类方法的属性注入所述对象内,包括:
20.遍历所述实现类路径中的实现类方法;
21.若存在被标记的实现类方法,则将被标记的实现类方法的属性注入到所述对象。
22.根据本发明的一些实施例,在项目启动之前,将插件的jar包引入所述项目。
23.根据本发明的一些实施例,所述插件的jar包根据所述插件接口的请求的协议转换和响应消息的协议转换定义实现所述插件接口的类,并选择类的实现方法。
24.根据本发明的一些实施例,在项目启动后,还包括步骤:
25.若需要更新所述插件的jar包;
26.移除当前所述插件的jar包,将更新插件的jar包引入所述项目。
27.根据本发明的一些实施例,所述被标记的实现类方法通过对变量进行注解的方式实现对实现类方法的标记。
28.第二方面,本发明的实施例提供了一种电子设备,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如第一方面所述的插件快速接入方法。
29.第三方面,本发明的实施例提供了一种计算机存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面所述的插件快速接入方法。
30.需要注意的是,本发明的第二方面和第三方面与现有技术之间的有益效果与第一方面的插件快速接入方法的有益效果相同,此处不再细述。
31.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
32.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
33.图1是本发明一实施例提供的一种插件快速接入方法的流程图;
34.图2是本发明一实施例提供的统一定义通信渠道的插件接口的流程图;
35.图3是本发明一实施例提供的根据实现类路径进行反射加载得到实现类路径对应的对象的流程图;
36.图4是本发明一实施例提供的选取实现类路径中被标记的实现类方法的属性注入对象内的流程图;
37.图5是本发明一实施例提供的统一定义通信渠道的插件接口的示意图;
38.图6是本发明一实施例提供的一种插件快速接入的具体方法的流程图;
39.图7是本发明一实施例提供的插件实现的流程图;
40.图8是本发明一实施例提供的电子设备的结构图。
具体实施方式
41.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
42.在本发明的描述中,如果有描述到第一、第二等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
43.在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
44.本发明的描述中,需要说明的是,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
45.参照图1,在本发明的一些实施例中,提供了一种插件快速接入方法,插件快速接入方法包括:
46.步骤s100、统一定义通信渠道的插件接口。
47.步骤s200、定义spi全限定配置文件的目录和名称;名称为通信渠道的插件接口的全路径。
48.步骤s300、启动项目时,查找项目下的spi全限定配置文件的目录及目录下的与名称符合的规则文件。
49.步骤s400、解析规则文件,获取通信渠道的插件接口的实现类路径。
50.步骤s500、根据实现类路径进行反射加载,得到实现类路径对应的对象。
51.步骤s600、选取实现类路径中被标记的实现类方法的属性注入对象内,并将完成属性注入的实现类方法缓存。
52.在本方法实施例的步骤s100中,首先通过统一定义通道渠道的插件接口,后续开发只用开发插件包,节省了开发的时间成本和人力成本;然后步骤s200通过定义spi全限定配置文件的目录和名称实现了居于特定基础类的组件加载,能使插件接入更加灵活;启动项目,先通过步骤s300查找全限定配置文件,通过步骤s400和步骤s500获取实现类路径并生成实现类对象,在通过步骤s600选取实现类路径中被标记的实现类方法的属性注入对象,实现了接入新的通信渠道不需要对现有系统修改,只需要修改插件包的内容,避免了系统变更所带来的风险。
53.参照图2,在本发明的一些实施例中,统一定义通信渠道的插件接口,包括:
54.步骤s101、获取通信渠道涉及的流程;流程包括信息发送、发送结果接收、回复消
息接收、链接维持心跳和登录。
55.步骤s102、根据流程统一定义插件接口的请求的协议转换和插件接口的响应消息的协议转换。
56.根据通信渠道涉及的流程定义插件接口的请求的协议转换和插件接口的响应消息的协议转换,能够使不同场景的通信渠道定义所需要的插件接口,避免浪费开发资源,减少人力和成本资源。
57.参照图3,在本发明的一些实施例中,根据实现类路径进行反射加载得到实现类路径对应的对象,包括:
58.步骤s501、根据实现类路径获取实现类路径对应的字节码文件。
59.步骤s502、根据字节码文件进行反射,得到实现类路径对应的对象。
60.需要说明的是,字节码文件是java编译时形成的以.class结尾的文件;字节码对象是把.class文件加载到内存中得到的对象。
61.通过实现类路径得到对应的字节码文件,字节码文件是一种八字节的二进制流文件,可以被jvm快速的加载到内存中,并且占用较少的内存空间,并且对类的描述能力甚至强于java源文件,因此通过字节码文件再得到实现类路径对应的对象,更加灵活,且占用内存资源低。
62.参照图4,在本发明的一些实施例中,选取实现类路径中被标记的实现类方法的属性注入对象内,包括:
63.步骤s601、遍历实现类路径中的实现类方法。
64.步骤s602、若存在被标记的实现类方法,则将被标记的实现类方法的属性注入到对象。
65.需要说明的是,被标记的实现类方法在开发时已经进行标记,根据开发时业务场景的需要进行了标记,一般标记的方式为添加一个注解,注解为@autowired。
66.属性注入实现简单,只需要给变量添加一个注解,就可以在不用新建一个对象的情况下,直接获得注入的对象。
67.在本发明的一些实施例中,在项目启动之前,将插件的jar包引入项目。
68.需要说明的是,插件的jar包的实现方法为:根据通信渠道的统一定义来实现插件接口的类,并根据通信渠道的真实情况,选择需要实现的方法,在统一定义的目录下新建统一定义的名称的文件,并在文件内天上实现类的全路径,最后打包插件项目得到插件的jar包。
69.由于插件的jar包是引入项目的,因此在插件可以单独进行开发,并且能够根据业务场景的不同,进行灵活开发,提高了利用率并减少了开发资源。
70.在本发明的一些实施例中,插件的jar包根据插件接口的请求的协议转换和响应消息的协议转换定义实现插件接口的类,并选择类的实现方法。
71.插件的jar包只需要根据统一定义的插件接口的请求的协议转换和响应消息的协议转换来实现插件接口的类,因此插件的jar包的开发流程很简洁,更容易做到按需扩展。
72.在本发明的一些实施例中,在项目启动后,还包括步骤:
73.若需要更新插件的jar包;
74.移除当前插件的jar包,将更新插件的jar包引入项目。
75.由于把插件jar包引入项目就能实现插件的使用,无需对项目进行任何调整,因此若需要插件的jar包进行更新,直接进行当前插件的jar包和更新插件的jar包进行替换就能实现插件的更新,因此插件的更新不需要对系统做出改变,只需要更换插件的jar包,避免了因插件的更新对系统可能存在的安全风险,提高了安全可靠性。
76.在本发明的一些实施例中,被标记的实现类方法通过对变量进行注解的方式实现对实现类方法的标记。
77.通过对变量进行注解,就能够实现对实现类方法的标记,直接获得注入的对象,标记的方式简洁明了,后期维护对标记的位置也容易查找,节省了时间成本。
78.为了方便本领域技术人员理解,本发明的一个具体实施例,提供一种插件快速接入方法,包括如下步骤:
79.第一步、定义通信渠道的插件接口。
80.参照图5,通信渠道涉及到信息发送、发送结果接收、回复消息接收、链接维持心跳、登录。那么插件接口需要对这些流程的涉及到的请求和响应消息的协议转换进行统一的定义。
81.第二步、使用spi机制实现插件加载。
82.参照图6,首先定义spi全限定配置文件的名称和目录:
83.定义全限定文件的名称为跟上面定义的插件接口全路径完成一致的文件名:
84.com.xuanwu.cpaas.channel.bond.abstracts.handler.protobufconverthandleservice,其中,文件路径指定为resources/meta-inf;
85.其次加载项目中该目录下的所有名称符合上一步定义的规则文件;
86.再对该规则文件进行解析,获取规则文件的内容,内容为protobufconverthandleservice接口的实现类路径;
87.再通过protobufconverthandleservice接口的实现类路径得到字节码文件,再通过字节码文件进行反射加载,得到实现类路径对应的对象;
88.再遍历字节码文件中定义的所有方法,判断方法是否被@autowrite注释标记,如果是被标记,则把方法对应的属性注入到上一步生成的对象内;
89.最后将完成属性注入的实现类方法再系统中缓存起来。
90.第三步、更新插件的实现。
91.参照图7,根据插件的制作过程可以知道,把插件的jar包,引入到包含插件底座的项目中,启动项目即可实现插件的使用,无需对项目进行任何调整;更新插件后,只需要替换插件的jar包;当不需要该插件时,直接把插件的jar包移除即可。
92.参考图8,本发明的另一个实施例,还提供了一种电子设备,该电子设备6000可以是任意类型的智能终端,例如手机、平板电脑、个人计算机等。
93.具体的,电子设备6000包括:一个或多个控制处理器6001和存储器6002,图8中以一个控制处理器6001与一个存储器6002为例,控制处理器6001和存储器6002可以通过总线或者其他方式连接,图8中以通过总线连接为例。
94.存储器6002作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及模块,如本发明实施例中的一种电子设备对应的程序指令/模块;
95.控制处理器6001通过运行存储在存储器6002中的非暂态软件程序、指令以及模块,从而执行一种插件快速接入方法的各种功能应用以及数据处理,即实现上述方法实施例的一种插件快速接入方法。
96.存储器6002可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储一种插件快速接入方法的使用所创建的数据等。此外,存储器6002可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器6002可选包括相对于控制处理器6001远程设置的存储器,这些远程存储器可以通过网络连接至该电子设备6000。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
97.在一个或者多个模块存储在存储器6002中,当被该一个或者多个控制处理器6001执行时,执行上述方法实施例中的一种插件快速接入方法,例如执行以上描述的图1至图4的方法步骤。
98.存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
99.需要说明的是,由于本实施例中的一种电子设备与上述的一种插件快速接入方法基于相同的发明构思,因此,方法实施例中的相应内容同样适用于本装置实施例,此处不再详述。
100.本发明的一个实施例,还提供一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行:如上述实施例的插件快速接入方法。
101.需要说明的是,由于本实施例中的一种计算机可读存储介质与上述的一种插件快速接入方法基于相同的发明构思,因此,方法实施例中的相应内容同样适用于本装置实施例,此处不再详述。
102.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储数据(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的数据并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何数据递送介质。
103.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
104.尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1