一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种对多种文件存储服务器进行调用的方法、装置及应用与流程

2022-09-04 04:41:07 来源:中国专利 TAG:


1.本技术涉及文件调用领域,特别是涉及一种对多种文件存储服务器进行调用的方法、装置及应用。


背景技术:

2.文件存储服务器用来存储各种文件数据,以方便不同的调用者进行调用,对于不同的文件存储服务器,如:fastdfs、seaweedfs、minion、oss和七牛云存储等,对于这些文件存储服务器,其文件的上传、下载的sdk(软件开发工具包)和api(应用程序编程接口)的规范是不同的,在需要使用不同的文件存储服务器时,需要调用者根据文件存储服务器的sdk和api进行技术组件的重复开发,对于研发人员来说,为了提高技术组件的复用性,使得每个组件是独享的,而不会和其他组件共享且每个组件都是独立的,所以有必要对其进行技术层面的封装。
3.以城市管理事件处理领域为例,对于城市管理事件处置系统研发已经迭代了多个版本,对于各个版本的文件上传方式均有不同;即使对于同一版本的业务系统而言,各个省市政府使用业务系统时,一些可能倾向于云服务,有一些可能倾向于使用自建的文件存储服务,对于自建的硬件机房进行维护,每一种文件存储服务器的封装方法和调用方式均有不同,即便对于oss这种有标准调用方式的文件存储服务器,不同的团队中对oss文件存储服务器中的文件进行封装的方式依然不同,从而导致文件的格式不统一以及重复开发导致的成本问题。


技术实现要素:

4.本技术实施例提供了一种对多种文件存储服务器进行调用的方法、装置及应用,在使用fastdfs、seaweedfs和oss中的一种文件存储服务时,可以不关注底层的具体实现,直接使用,即使使用的是其他的文件存储服务,也可以根据定义好的接口进行文件的调用、扩展。
5.第一方面,本技术实施例提供了一种对多种文件存储服务器进行调用的方法,所述方法包括:
6.依托于springboot框架生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中包含用于调用对应的文件存储服务器的文件调用组件;
7.将所述依赖文件放入依赖库中,通过将springboot框架中的配置文件对应的配置字段设置为true以开启所述依赖文件,并将所述依赖文件中入口类的文件调用组件加载到所述springboot框架的控制容器中;
8.在需要调用文件的类中通过注入方法将所述控制容器中的所述文件调用组件进行注入。
9.第二方面,本技术实施例提供了一种对多种文件存储服务器进行调用的装置,包括:
10.生成模块:依托于springboot框架生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中包含用于调用对应的文件存储服务器的文件调用组件;
11.导入模块:将所述依赖文件放入依赖库中,通过将springboot框架中的配置文件对应的配置字段设置为true以开启所述依赖文件,并将所述依赖文件中入口类的文件调用组件加载到所述springboot框架的控制容器中;
12.调用模块:在需要调用文件的类中通过注入方法将所述控制容器中的所述文件调用组件进行注入。
13.第三方面,本技术实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以一种对多种文件存储服务器进行调用的方法。
14.第四方面,本技术实施例提供了一种计算机程序产品,包括软件代码部分,当所述计算机程序产品在计算机上被运行时,所述软件代码部分用于执行一种对多种文件存储服务器进行调用的方法。
15.第五方面:本技术实施例提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括一种对多种文件存储服务器进行调用的方法。
16.本发明的主要贡献和创新点如下:
17.本技术实施例使用经典设计模式中的策略模式,提高了文件调用组件的复用性,使得可以通过一种文件调用组件调用不同的文件存储服务器,统一了调用方法的入口,并定义了统一的返回格式,屏蔽掉了底层的具体实现;本技术实施例默认实现了三种不同文件存储服务器的具体的调用方式,可以对其直接进行使用,并且在所述依赖文件中预留了扩展接口,当对其他的文件存储服务器时进行调用时,可以通过所述扩展接口进行扩展实现;本技术实施例采用按需加载的思想,在需要对文件存储服务器进行调用时,开启所述依赖文件进行调用,不需要对文件存储服务器进行调用时,关闭所述依赖文件,对程序功能不会产生任何的影响,不限制死调用方必须使用,没有强依赖性、强耦合性。
18.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
19.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
20.图1是根据本技术实施例的一种对多种文件存储服务器进行调用的方法的流程图;
21.图2是根据本技术实施例的maven仓库上传下载示例图;
22.图3是根据本技术实施例的策略接口及三种默认实现示例图;
23.图4是根据本技术实施例的starter依赖文件的使用流程图;
24.图5是根据本技术实施例的一种对多种文件存储服务器进行调用的装置的结构框图;
25.图6是根据本技术实施例的电子装置的硬件结构示意图。
具体实施方式
26.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
27.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
28.实施例一
29.本技术旨在提出一种对多种文件存储服务器进行调用的方法,在实现时,依托于springboot框架,生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中定义了文件调用组件用来对文件存储服务器进行文件调用,在配置文件中开启所述依赖文件,并将所述依赖文件中的文件调用组件加载到所述springboot框架的控制容器中,通过控制容器的注入方法对文件存储服务器中的文件进行调用。
30.本技术实施例提供了一种对多种文件存储服务器进行调用的方法,可以实现数据快速、自动导入的目的,具体地,参考图1,所述方法包括:
31.依托于springboot框架生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中包含用于调用对应的文件存储服务器的文件调用组件;
32.将所述依赖文件放入依赖库中,通过将springboot框架中的配置文件对应的配置字段设置为true以开启所述依赖文件,并将所述依赖文件中入口类的文件调用组件加载到所述springboot框架的控制容器中;
33.在需要调用文件的类中通过注入方法将所述控制容器中的所述文件调用组件进行注入。
34.在一些实施例中,在“依托于springboot框架生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中包含用于调用对应的文件存储服务器的文件调用组件”步骤中,所述入口类通过策略模式编写文件调用组件,所述文件调用组件包括:文件上传方法、文件下载方法、文件删除方法。
35.具体的,为了方便调用人员使用,且使编写过程更加规范,基于封装命名原则生成名为upload-spring-boot-starter.jar的依赖文件,所述入口类将其命名为fileutil,所述入口类中定义了文件上传方法upload、文件下载方法download、文件删除方法delete。
36.在一些实施例中,所述入口类中的文件调用组件通过策略接口对文件进行调用,且在入口类中预留了一个扩展策略接口,可以进行自定义扩展实现对其他文件存储服务器的调用。
37.具体的,如图2所示,fileoperatestrategy为入口类中的策略接口,seaweedfs、oss、fastdfs为本方案默认的三种文件存储服务器,fileoperatestrategy可以直接对所述三种文件存储服务器进行文件调用。
38.在一些实施例中,在所述springboot框架中spring工程的pom.xml文件中将所述依赖文件导入依赖库中。
39.具体的,可以将所述依赖文件直接保存到本地依赖库中通过maven的groupid、artifactid、version操作将所述依赖文件引入所述spring框架的依赖库中。
40.进一步的,如图3所示,先将所述依赖文件上传到maven nexus仓库中,再将所述maven nexus仓库中的所述依赖文件导入到spring框架的依赖库中。
41.示例性的,通过groupid引入依赖文件需要在代码实现中添加项目名、工程名和版本号,所述项目名为当前项目的名字;所述工程名为所述依赖文件的名字、所述版本号为当前项目的版本。
42.本方案提供的配置文件至少包括enable字段,所述配置文件中的所述配置字段包括:调用方式字段、文件存储服务器标识字段、开启字段;所述调用方式字段包括文件上传方法upload、文件下载方法download、文件删除方法delete;所述文件存储服务器标识字段包括fastdfs、seaweedfs、oss、minion等不同的文件存储服务器;所述开启字段为enable,将enable设置为true或false来对文件存储服务器进行开启或者关闭。
43.示例性的,在所述springboot框架中,所述配置文件默认为application.properties,springboot框架在加载时会自动读取所述配置文件来进行配置。
44.在一些实施例中,“在配置文件中通过将enable设置为true的方式开启所述依赖文件”步骤中,将enable设置为false时,所述依赖文件对程序功能不会产生任何的影响。
45.具体的,在所述配置文件配置完成时,需要操作maven对所述依赖文件进行重新导入操作,以确认所述入口类中的文件调用组件已经存在于依赖库中。
46.示例性的,当需要开启fastdfs文件存储服务器的文件上传服务时,在所述配置文件中upload.fastdfs.enable=true,目的是开启fastdfs的扫描服务;将uploa d.fastdfs.trackerlist=10.10.77d.37:22122,目的是获取fastdfs的对应的服务地址,fastdfs文件存储服务器的的文件下载服务和文件删除服务与上述步骤相同,在此不做赘述。
47.若要对其他文件存储服务器进行调用,则需将所述配置文件中配置字段的文件存储服务器标识字段改为其他文件存储服务器的标识。
48.在一些实施例中,“将所述依赖文件中入口类的文件调用组件加载到所述springboot框架的控制容器中”步骤包括,在对所述配置文件完成配置时,启动springboot框架会自动扫描所述依赖文件中的所述文件调用组件,并添加到io c容器中。
49.在一些实施例中,在进行文件调用时,通过编写一个类文件,并在所述类文件中定义一个post方法,在所述post方法中使用所述入口类中的文件调用方法进行文件的调用,调用成功后,返回统一格式的结果。
50.示例性的,在进行文件上传时,在所述类文件中定义一个component,所述post方法在component的api类中进行定义,并暴露给调用方可以进行http的调用,所述post方法中使用所述入口类中的文件上传方法进行文件的上传,所述统一格式的结果中包括包含文件访问的url地址,并把所述统一格式的结果复制为两份,一份返回给调用方,另一份存储到文件存储服务器中。
51.在一些实施例中,在进行文件调用时,通过所述控制容器的注入方法,将所述类文件中的内容注入到需要调用文件的类中进行调用。
52.具体的,将所述类文件的内容注入到需要调用文件的类中进行调用后,通过所述入口类的策略接口,选择合适的调用方法对不同的文件存储服务器进行调用。
53.示例性的,通过控制容器的注入方法@autowired将component注入到需要调用文件的类中,进行调用时,通过所述入口类的策略接口对所述文件存储服务器进行调用。
54.实施例二
55.以数字城管系统和综合执法系统为例,所述数字城管系统和综合执法系统的后端服务集中在cg-api-jar的服务中,数字城管系统使用的文件存储服务器为fastdfs,综合执法系统使用的文件存储服务器为seaweedfs。
56.示例性的,如图4所示,通过编辑后端服务中的pom.xml文件将封装好的依赖文件starter上传到maven的nexus仓库中,之后通过maven进行对依赖文件starter重新导入判断所述nexus仓库中是否存在所述starter依赖文件;修改所述后端服务中的配置文件,将所述配置文件中配置字段的开启字段enable设置为true,并将所述依赖文件中的文件调用组件加载到后端服务的控制容器中,所述文件调用组件中包含对文件存储服务器fastdfs和seaweedfs的默认实现,所以可以直接在配置文件中对所述依赖文件进行开启,从而实现通过所述依赖文件中的策略接口对文件存储服务器fastdfs和seaweedfs的直接调用。
57.上述示例中采用的方法与实施例一中相同,再次不做过多赘述。
58.实施例三
59.基于相同的构思,参考图5,本技术还提出了一种对多种文件存储服务器进行调用的装置,包括:
60.生成模块:依托于springboot框架生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中包含用于调用对应的文件存储服务器的文件调用组件;
61.导入模块:将所述依赖文件放入依赖库中,通过将springboot框架中的配置文件对应的配置字段设置为true以开启所述依赖文件,并将所述依赖文件中入口类的文件调用组件加载到所述springboot框架的控制容器中;
62.调用模块:在需要调用文件的类中通过注入方法将所述控制容器中的所述文件调用组件进行注入。
63.实施例四
64.本实施例还提供了一种电子装置,参考图6,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
65.具体地,上述处理器402可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
66.其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(harddiskdrive,简称为hdd)、软盘驱动器、固态驱动器(solidstatedrive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情
况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(non-volatile)存储器。在特定实施例中,存储器404包括只读存储器(read-onlymemory,简称为rom)和随机存取存储器(randomaccessmemory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmableread-onlymemory,简称为prom)、可擦除prom(erasableprogrammableread-onlymemory,简称为eprom)、电可擦除prom(electricallyerasableprogrammableread-onlymemory,简称为eeprom)、电可改写rom(electricallyalterableread-onlymemory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(staticrandom-accessmemory,简称为sram)或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器404(fastpagemodedynamicrandomaccessmemory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extendeddateoutdynamicrandomaccessmemory,简称为edodram)、同步动态随机存取内存(synchronousdynamicrandom-accessmemory,简称sdram)等。
67.存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
68.处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的一种对多种文件存储服务器进行调用的方法。
69.可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
70.传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
71.输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是配置文件的配置信息,入口类中的文件调用方法等,输出的信息可以是不同文件存储服务器中的文件信息等。
72.可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
73.s101、依托于springboot框架生成一个依赖文件,在所述依赖文件中定义一个入口类,所述入口类中包含用于调用对应的文件存储服务器的文件调用组件;
74.s102、将所述依赖文件放入依赖库中,通过将springboot框架中的配置文件对应的配置字段设置为true以开启所述依赖文件,并将所述依赖文件中入口类的文件调用组件加载到所述springboot框架的控制容器中;
75.s103、在需要调用文件的类中通过注入方法将所述控制容器中的所述文件调用组件进行注入。
76.需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
77.通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
78.本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如dvd及其数据变体、cd等光学介质上。物理介质是非瞬态介质。
79.本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
80.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献