动态创建服务接口的方法、装置、电子设备及存储介质与流程

文档序号:24737709发布日期:2021-04-20 20:28阅读:185来源:国知局
动态创建服务接口的方法、装置、电子设备及存储介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种动态创建服务接口的方法、装置、电子设备及存储介质。


背景技术:

2.保险经纪代理主要负责售卖保险各类产品,而售卖的产品渠道一般来源于保险公司或者其他家经营代理机构,面对多种多样不同的保险公司、代理机构,在核保、续保、续期、理赔等特殊业务类型上会遇到服务接口不兼容的问题。
3.因此,在兼容现有各种保险业务差异性的基础上,提供如何接入特殊业务的可扩展性服务接口的适配方案,即保证在不影响已有业务流程且能够动态接入服务接口实现调用特殊业务的服务功能是目前需要解决的技术问题。


技术实现要素:

4.本发明提供一种动态创建服务接口的方法、装置、电子设备及存储介质,用以解决现有技术中在核保、续保、续期、理赔等特殊业务类型的服务接口不兼容的问题,在不影响已有业务流程下能够动态接入服务接口并实现调用特殊业务的服务功能。
5.本发明提供一种动态创建服务接口的方法,包括:
6.基于服务提供接口spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务;
7.当获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的;
8.通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
9.根据本发明提供一种的动态创建服务接口的方法,所述基于spi机制通过接口适配获取业务类型,包括:
10.当基于spi机制通过接口适配获取到标准业务,所述标准业务通过所述接口适配提供的标准服务接口直接被调用方调用。
11.根据本发明提供一种的动态创建服务接口的方法,所述当获取到特殊业务时,通过所述spi的接口文件加载所述特殊业务的路径,包括:
12.加载所述spi的meta

inf目录下的接口文件;
13.通过所述接口文件加载所述特殊业务的绝对路径,所述绝对路径为以web站点根目录为参考基础的目录路径。
14.根据本发明提供一种的动态创建服务接口的方法,所述将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,包括:
15.通过加载路径发现所述特殊业务的服务并记载实现所述服务的扩展类;
16.spi的serviceloader将所述扩展类封装在迭代器对象中,为服务提供方提供具体服务实现;
17.加载所述扩展类至迭代器中时,将所述扩展类注册到所述spring框架,使所述扩展类成为spring的bean。
18.根据本发明提供一种的动态创建服务接口的方法,所述将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,包括:
19.将所述特殊业务的业务类型自定义转换成对应的扩展类,所述业务类型包括供销商、分销商、产品类别、产品编码的一种或多种组合;
20.将所述对应的扩展类注册到所述spring框架,并由所述spring框架对所述扩展类的生命周期进行管理;
21.根据所述对应的扩展类动态创建对应的服务接口,以实现基于spi机制加载所述spring框架的扩展类。
22.根据本发明提供一种的动态创建服务接口的方法,所述通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转,包括:
23.调用方基于自定义的spi通过所述动态创建服务接口直接调用spring框架的扩展类;
24.所述spring框架的扩展类直接获取服务提供方所提供的所述特殊业务。
25.根据本发明提供一种的动态创建服务接口的方法,所述spi的serviceloader将所述扩展类封装在迭代器对象中,为服务提供方提供具体服务实现,包括:
26.创造serviceloader类的线程对象得到上下文类加载器,所述加载器用于加载所述扩展类;
27.通过serviceloader对所述扩展类进行动态加载,并将所述扩展类的路径保存至配置文件中。
28.本发明还提供一种动态创建服务接口的装置,包括:
29.获取模块,用于基于spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务;
30.动态创建模块,用于当获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的;
31.调用模块,用于通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
32.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述动态创建服务接口的方法的步骤。
33.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述动态创建服务接口的方法的步骤。
34.本发明提供的动态创建服务接口的方法、装置、电子设备及存储介质,用以解决现有技术中在核保、续保、续期、理赔等特殊业务类型的服务接口不兼容的问题,通过将spi与spring框架相结合,在不影响已有业务流程下能够动态接入服务接口并实现调用特殊业务
的服务功能。
附图说明
35.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是本发明提供的业务应用的流程示意图;
37.图2是本发明提供的基于spi机制的调用服务的示意图
38.图3是本发明提供的动态创建服务接口的流程示意图;
39.图4是本发明提供的将扩展类注册到spring框架的流程示意图;
40.图5是是本发明提供的扩展类封装在迭代器对象的流程示意图;
41.图6是本发明提供的调用特殊业务的流程示意图;
42.图7是本发明提供的动态创建服务接口的装置的结构示意图;
43.图8是本发明提供的电子设备的结构示意图。
具体实施方式
44.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.下面对本发明所述动态创建服务接口的方法、装置、电子设备及存储介质的技术术语进行描述。
46.java是一门面向对象编程语言,可以编写桌面应用程序、web应用程序、分布式系统和嵌入式系统应用程序。java语言吸收了c++语言的各种优点,具有功能强大和简单易用两个特征。并且,java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。再有,java语言具有简单性、面向对象、分布式、安全性、平台独立与可移植性、动态性等特点。
47.spi(英文:service provider interface,中文:服务提供接口)是java提供的一套供第三方实现或扩展使用的技术体系,也是jdk(英文:java development kit,java开发的工具)内置的一种服务提供(接口实现)发现机制,可以通过classpath路径下的meta

inf/service文件查找文件,加载里面定义的类。所以,spi是建立在面向接口编程下的一种为了使组件可扩展或动态变更实现的规范。spi可用来启用框架拓展和替换组件,比如在最常见的数据库连接jdbc中,java.sql.driver,不同的数据库产商可以对接口做不一样的实现,jdk要知道这些数据库产商有哪些实现,就需要通过spi查找到接口的实现,对其进行操作,即解耦。因此,java的spi机制可为某个服务接口寻找服务实现,通过解耦服务具体实现以及服务使用,使得程序的可扩展性大大增强,即可插拔。
48.spring框架是一个开放源代码的j2ee应用程序框架,是针对bean的生命周期进行管理的轻量级容器。bean是spring框架管理的对象,可以是一个或多个,应用程序是由一个
个bean构成的。
49.现有技术中由于spi未与spring框架相结合,所以无论是java spi或是spring spi,都无法实现与spring框架整合,导致在调用spring框架进行引用扩展类时,无法找到具体的扩展类。
50.基于上述,在应用到保险业务领域时,当已有的技术架构在接收到各种保险业务(比如核保、续保、续期、理赔)时,由于保险业务的各业务类型是属于不同的第三方提供的,所以在接入所述保险业务时因服务接口规范的不同而导致调用方无法调用服务提供方所提供的所述保险业务的服务。
51.因此,本发明提供了一种动态创建服务接口的方法、装置、电子设备及存储介质,用以解决现有技术中在核保、续保、续期、理赔等特殊业务类型的服务接口不兼容的问题,通过将spi与spring框架相结合,在不影响已有业务流程下能够动态接入服务接口并实现调用特殊业务的服务功能。
52.下面结合图1

图8描述本发明所述动态创建服务接口的方法、装置、电子设备及存储介质。
53.图1是本发明提供的业务应用的流程示意图,如图所示。
54.步骤100,客户端获取到用户购买服务,所述服务可以是保险服务,也可以是其他服务,本发明实施例以保险服务为应用场景,但不限于保险服务应用场景。
55.步骤101,客户端获取到用户进行业务类型操作,所述业务类型包括对所购买的保险服务进行核保、续保、续期、理赔等操作。
56.步骤102,系统的接口适配获取到用户的上述业务类型操作,首先判断所述业务类型是标准业务还是特殊业务。
57.步骤103,如果所述业务类型是标准业务,所述标准业务就是系统的技术架构已有标准服务接口可以直接供调用,执行步骤105。
58.步骤104,如果所述业务类型是特殊业务,即所述特殊业务与系统的技术架构的接口不兼容,因为不同数据库产商对服务接口做不同的实现,所以无法直接调用所述特殊业务,需要对此类业务进行技术框架扩展,执行步骤106。
59.步骤105,通过调用标准服务接口实现所述标准业务的调用,即通过spi已有的实现类来实现所述标准业务的调用。
60.步骤106,实现架扩展框步骤。可选的,通过spi与sring的结合实现可插拔式服务扩展。
61.步骤107~109,针对特殊业务的流程,比如供销商、分销商、产品类别、产品编码等维度制定服务接口规范。
62.步骤110,调用方通过动态创建服务接口调用服务提供方的特殊业务,以实现系统业务流程的正常流转。
63.图1示出了本发明的应用场景,即针对经营代理平台售卖保险领域面对不同的保险公司、不同的保险产品的多样化接入业务类型,使本发明在保险业务中的核保、续保、续期、理赔等关键业务点能够可插拔式接入服务接口,展现保险产品的产品特性。
64.本发明所述基于动态创建服务接口的可扩展适配方案,保障在不影响已有流程且能够无缝接入服务接口实现特殊业务的产品特性,通过服务发现spi对特殊业务进行适配
并进行横向扩展,可以在不同维度(比如对供销商、分销商、产品类别、产品编码等维度)制定的接口规范,保证系统业务流程的正常流转。
65.以下将从技术实现层面上对上述步骤106中的扩展框架的步骤进行描述。
66.图2是本发明提供的基于spi机制的调用服务的示意图,如图所示。
67.针对标准业务:调用方200调用标准服务接口201,服务发现spi进行服务加载之后,直接调用服务提供方202对应的实现类a,从而实现标准业务的服务调用。
68.需要说明的是,spi接口的定义在于调用方,当服务提供方提供了一种接口的实现之后,需要在classpath下的meta

inf/services/目录里创建一个以服务接口命名的文件,这个文件里的内容就是这个接口的具体的实现类。当其他的程序需要这个服务的时候,就可以通过查找这个jar包(一般都是以jar包做依赖)的meta

inf/services/中的配置文件,配置文件中有接口的具体实现类名,可以根据这个类名进行加载实例化,就可以使用该服务了。jdk(java开发的工具)中查找服务实现的工具类是:java.util.serviceloader。
69.针对特殊业务:调用方采用本发明的接口适配方案调用扩展服务接口n 203,服务发现spi可以自定义spi204关于特殊业务的扩展类,并将所述扩展类注册到spring框架205,实现了spi与spring框架相结合206,从而服务发现在进行服务加载时,通过扩展服务接口n 203调用服务提供方202的扩展类c。所述扩展服务接口是由spi动态创建的服务接口,可以是一个或多个服务接口,具体根据特殊业务的类而设定,所述类是所述特殊业务的服务内容。
70.可以理解的是,spi不知道服务提供方的数据包怎么实现的一个接口,就需要对类进行扩展,即将扩展类配置到一个文件里,文件名是需要拓展的接口,然后调用serviceloader加载接口,就可以获取扩展类的实例。serviceloader是java提供的一套spi框架,用于实现服务提供方与服务使用方的解耦。
71.综上可知,标准业务的类,在spring框架内已有对应的实现类,所以spi可以直接调用。但是特殊业务的类,在spring框架内没有对应的实现类,所以spi不可以直接调用,需要通过spi自定义的扩展类,并将所述自定义的扩展类注册到spring框架内,这样spi才可以直接调用所述扩展类。
72.图3是本发明提供的动态创建服务接口的流程示意图,如图所示。一种动态创建服务接口的方法,包括:
73.步骤300,调用方基于spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务。
74.可选的,不同保险公司提供不同的服务,各个保险公司的服务是由各自研发团队来维护,所以在统一服务平台下,需要调用不同保险公司提供的服务,就需要创建动态服务接口,即制定服务接口规范。由于spi(服务发现)机制提供统一业务类型服务接口,支持可插拔式服务扩展,所以采用spi机制可实现获取动态服务。
75.可选的,所述当获取到特殊业务时,通过所述spi的接口文件加载所述特殊业务的绝对路径,包括:
76.加载所述spi的meta

inf目录下的接口文件。
77.可选的,将java程序编译成.exe文件,一般会包括一个可执行的jar文件包。所述jar文件包是类文件的zip压缩存档,每个所述jar文件都有一个默认产生的meta

inf目录,
所述meta

inf相当于一个信息包,用于配置应用程序、扩展程序、类加载器等。
78.通过所述接口文件加载所述特殊业务的绝对路径,所述绝对路径为以web站点根目录为参考基础的目录路径。
79.步骤301,当调用方获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的。
80.现有技术中,无论是java spi或是spring spi,都与spring容器进行整合。比如特殊业务a时通过spi方式创建的,如果特殊业务a实现类中调用了spring框架管理的特殊业务a对应的具体内容,则会出现错误,因为特殊业务a实现类的生命周期并没有交给spring框架管理,所以无法调用spring框架的特殊业务a对应的具体内容。
81.因此,本发明引入了自定义spi的业务逻辑,即加载spi接口文件,通过所述接口文件将自定义的扩展类bean注册到spring框架中,并由spring对所述扩展类bean进行管理。
82.需要说明的是,每个spi服务接口都有一个服务文件,所述服务文件名为实现规范接口的类名全路径。规范的具体实现类要依赖规范的服务接口。
83.步骤302,调用方通过所述动态创建服务接口直接调用服务提供方的所述特殊业务以保证系统业务流程的正常流转。
84.本发明基于spi机制实现自定义动态bean加载到spring框架的实现逻辑,所以通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
85.以下将通过具体实施例和附图说明spi与spring结合的业务逻辑。
86.图4是本发明提供的将扩展类注册到spring框架的流程示意图,如图所示。所述将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,包括:
87.步骤400,通过加载路径发现所述特殊业务的服务并记载实现所述服务的扩展类。
88.可选的,根据特殊业务的维度对服务接口进行扩展。比如特殊业务是保险业务种的续保服务,那么可以从供销商、产品类别、产品编码等维度制定服务接口规范。
89.步骤401,spi的serviceloader将所述扩展类封装在迭代器对象中,为服务提供方提供具体服务实现。
90.serviceloader为用于加载固定类路径下文件的一个加载器,通过serviceloader加载了对应服务接口声明的实现类。
91.可选的,本发明是通过重新serviceloader的方式实现动态创建服务接口。重新serviceloader的执行步骤包括:定义服务接口,实现服务接口,注册实现类到meta

inf/services以及加载服务。
92.可迭代是java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍,迭代的过程中需要依赖一个迭代器对象。迭代器(iterator)模式,又叫做游标模式,提供一种方法访问一个容器(java的集合框架的集合类称为容器)对象中各个元素,而又不需暴露该对象的内部细节。
93.步骤402,加载所述扩展类至迭代器中时,将所述扩展类注册到所述spring框架,使所述扩展类成为spring的bean。
94.可选的,本发明可根据业务类型的特殊业务信息动态生成bean,具体为:在自定义spi下,服务接口的实现则由spi框架生成,通过spi框架定义的扩展类动态注册到spring框
架中。
95.图5是本发明提供的所述扩展类封装在迭代器对象的流程示意图。所述spi的serviceloader将所述扩展类封装在迭代器对象中,为服务提供方提供具体服务实现,包括:
96.步骤500,创建serviceloader类的线程对象得到上下文类加载器,所述加载器用于加载所述扩展类。
97.可选的,serviceloader类的内部实现逻辑,是通过获得当前线程的上下文加载器,所述上下文加载器用于后续加载实现服务接口的扩展类,而动态创建服务接口是在迭代器中实现的。
98.可选的,利用反射机制获得扩展类的类对象,在通过类对象获得扩展类的实例。
99.步骤501,通过serviceloader对所述扩展类进行动态加载,并将所述扩展类的路径保存至配置文件中。
100.可选的,运行时通过保险业务的供应商、产品编码维度向下转型至具体扩展类,提供具体业务逻辑。
101.由此可见,spi通过动态加载机制实现了面向接口编程,提高了框架和底层实现的分离,serviceloader用于加载扩展类,所述扩展类是实现动态创建服务接口的特定实现类。
102.图6是本发明提供的调用特殊业务的流程示意图,如图所示。所述通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转,包括:
103.步骤600,调用方基于自定义的spi通过所述动态创建服务接口直接调用spring框架的扩展类。
104.步骤601,所述spring框架的扩展类直接获取服务提供方所提供的所述特殊业务的服务。
105.综上所述,通过spi与spring框架的组合,可实现动态创建服务接口,通过动态创建服务接口调用所述特殊业务时,系统就可以运行所述特殊业务的代码,能够获取到所述特殊业务的服务内容。
106.下面对本发明提供的动态创建服务接口的装置进行描述,下文描述的动态创建服务接口的装置与上文描述的动态创建服务方法可相互对应参照。
107.图7是本发明提供的动态创建服务接口的装置的结构示意图,如图所示。一种动态创建服务接口的装置700,包括获取模块701、动态创建模块702以及调用模块703。其中,
108.获取模块701,用于基于spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务。
109.动态创建模块702,用于当获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的。
110.调用模块703,用于通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
111.图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(communications interface)820、存储器(memory)830和
通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行上述所述动态创建服务接口的方法的步骤,所述方法包括:
112.基于spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务;
113.当获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的;
114.通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
115.此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
116.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的动态创建服务接口的方法的步骤,所述方法包括:
117.基于spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务;
118.当获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的;
119.通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
120.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的动态创建服务接口的方法的步骤,所述方法包括:
121.基于spi机制通过接口适配获取业务类型,所述业务类型包括标准业务和特殊业务;
122.当获取到特殊业务时,通过spi的接口文件加载所述特殊业务的路径,并将所述特殊业务的扩展类注册到spring框架以实现动态创建服务接口,所述特殊业务的扩展类是通过spi创建的;
123.通过所述动态创建服务接口直接调用所述特殊业务以保证系统业务流程的正常流转。
124.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
125.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
126.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1