CN114936046A - Web服务公共组件的拓展方法、装置、电子设备及存储介质 - Google Patents

Web服务公共组件的拓展方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114936046A
CN114936046A CN202110166658.XA CN202110166658A CN114936046A CN 114936046 A CN114936046 A CN 114936046A CN 202110166658 A CN202110166658 A CN 202110166658A CN 114936046 A CN114936046 A CN 114936046A
Authority
CN
China
Prior art keywords
service
project
layer
component
public component
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.)
Pending
Application number
CN202110166658.XA
Other languages
English (en)
Inventor
席静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110166658.XA priority Critical patent/CN114936046A/zh
Publication of CN114936046A publication Critical patent/CN114936046A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

本申请提供了一种WEB服务公共组件的拓展方法、装置、电子设备及存储介质,所述公共组件包括用于与外界进行参数交换的控制器层、在所述控制器层的调用下用于进行服务的服务层、在所述服务层的调用下用于操作数据库的数据访问层,所述控制器层不可继承,所述公共组件的业务逻辑集中于所述服务层,所述方法包括:通过依赖所述服务层或者所述数据访问层,新建依赖所述公共组件的拓展工程;通过依赖所述服务层,将拓展服务部署入所述拓展工程;基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务。本申请实施例实现了对WEB服务公共组件的零侵入强拓展。

Description

WEB服务公共组件的拓展方法、装置、电子设备及存储介质
技术领域
本申请涉及WEB服务领域,具体涉及一种WEB服务公共组件的拓展方法、装置、电子设备及存储介质。
背景技术
在WEB服务中,公共组件的存在是必不可少的,例如用于日志管理、用户管理、调度管理等WEB服务的公共组件。在公共组件的调用过程中,常常需要根据实际应用需求对公共组件的服务进行拓展,以使得公共组件能够提供个性化的拓展服务。
现有技术中,对于公共组件的拓展一定会对公共组件的主体应用进行修改,对公共组件造成侵入;而且拓展的前提是先定义接口,无法任意地进行拓展。
发明内容
本申请的一个目的在于提出一种WEB服务公共组件的拓展方法、装置、电子设备及存储介质,能够实现对WEB服务公共组件的零侵入强拓展。
根据本申请实施例的一方面,公开了一种WEB服务公共组件的拓展方法,所述公共组件包括用于与外界进行参数交换的控制器层、在所述控制器层的调用下用于进行服务的服务层、在所述服务层的调用下用于操作数据库的数据访问层,所述控制器层不可继承,所述公共组件的业务逻辑全部设于所述服务层,所述方法包括:
通过依赖所述服务层或者所述数据访问层,新建依赖所述公共组件的拓展工程;
通过依赖所述服务层,将拓展服务部署入所述拓展工程;
基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务。
根据本申请实施例的一方面,公开了一种WEB服务公共组件的拓展装置,所述公共组件包括用于与外界进行参数交换的控制器层、在所述控制器层的调用下用于进行服务的服务层、在所述服务层的调用下用于操作数据库的数据访问层,其特征在于,所述装置包括:
工程新建模块,配置为通过依赖所述服务层或者所述数据访问层,新建依赖所述公共组件的拓展工程;
工程部署模块,配置为通过依赖所述服务层,将拓展服务部署入所述拓展工程;
工程配置模块,配置为基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务。
在本申请的一示例性实施例中,所述装置配置为:将所述公共组件的控制器层、所述服务层以及所述数据访问层分别封装入对应的子模块。
在本申请的一示例性实施例中,所述装置配置为:
通过将所述服务层所在子模块作为依赖写入所述拓展工程,实现依赖所述服务层;
通过将所述数据访问层所在子模块作为依赖写入所述拓展工程,实现依赖所述数据访问层。
在本申请的一示例性实施例中,所述装置配置为:
通过依赖所述服务层新增所述拓展服务;
将所述拓展服务部署入所述拓展工程。
在本申请的一示例性实施例中,所述装置配置为:
通过依赖所述服务层对所述公共组件已有的服务进行修改得到所述拓展服务;
将所述拓展服务部署入所述拓展工程,并提高所述拓展服务的注入优先级。
在本申请的一示例性实施例中,所述装置配置为:
新建所述拓展工程的启动类;
获取所述公共组件的启动类的注解配置;
将所述注解配置拷贝至所述拓展工程的启动类,以通过所述拓展工程的启动类触发所述公共组件提供所述拓展服务。
在本申请的一示例性实施例中,所述装置配置为:
在所述拓展工程中配置关联所述公共组件的启动类的启动类路径,以通过所述公共组件的启动类触发所述公共组件提供所述拓展服务。
根据本申请实施例的一方面,公开了一种电子设备,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行以上权利要求中的任一个所述的方法。
根据本申请实施例的一方面,公开了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行以上权利要求中的任一个所述的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
本申请实施例中,通过将公共组件配置为控制器层不可继承以及业务逻辑全部设于服务层,从而使得依赖于该公共组件的拓展工程可以不对该公共组件造成任何侵入即可在公共组件的基础上任意进行拓展服务的提供,实现了对WEB服务公共组件的零侵入强拓展。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参考附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
图1示出了根据本申请一个实施例的公共组件以及其拓展之间的架构示意图。
图2示出了根据本申请一个实施例的WEB服务公共组件的拓展方法流程图。
图3示出了根据本申请一个实施例的将公共组件封装为多个子模块的架构示意图。
图4示出了根据本申请一个实施例的WEB服务公共组件的拓展装置框图。
图5示出了根据本申请一个实施例的WEB服务公共组件的拓展电子设备硬件图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本申请的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本申请的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本申请的各方面变得模糊。
附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请涉及云技术的网站平台。
本申请实施例提供了一种WEB服务公共组件的拓展方法。其中,本申请实施例中的公共组件可以是SpringBoot框架的公共组件,也可以是非SpringBoot框架的公共组件。出于便于理解的目的,本申请实施例以SpringBoot框架的公共组件为示例进行描述,但并不代表本申请实施例只能适用于SpringBoot框架的公共组件。
本申请实施例中的公共组件有关服务提供以及服务拓展的部分主要包括三部分:控制器层,在本申请实施例中记为controller;服务层,在本申请实施例中记为service;数据访问层,在本申请实施例中记为dao(data access object,数据库访问对象)。
其中,controller是定义了公共组件的API(Application ProgrammingInterface,应用程序接口)路径与出入参数的代码层。用于公共组件与外界进行参数交换,主要负责公共组件的入参校验以及出参包装。
service是具体的业务逻辑的代码层,由controller调用。用于公共组件进行功能服务,主要负责数据分析与数据组装。进一步的,service包括:服务层接口,在本申请实施例中记为service接口;服务层接口实现,在本申请实施例中记为serviceImpl。其中,服务实现主要聚集在serviceImpl中,对公共组件进行的拓展主要通过操作serviceImpl实现。
dao是和数据库交互的代码层,由service调用。用于操作数据库,具体的,用于对数据库进行增加、检索、更新、删除。
其中,数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例中,为实现对公共组件的零侵入强拓展,将公共组件中的controller配置为不可继承,即,controller中的所有类均不允许被继承。原因在于,若将controller配置为可继承:在此基础上进行的服务拓展,会导致controller所定义的API被前端或者其他相关服务调用时,API的url和出入参数发生变化,对公共组件造成侵入导致部分服务不可用。而且,若将controller配置为可继承:当用户手动对公共组件进行服务拓展时,需要用户充分了解公共组件的业务逻辑、每个入参和出参的作用以及使用处、每个接口的使用处,而且均要同步修改,成本高;而且,如果用户每一充分了解业务逻辑,修改了一个不可改动的字段会导致部分服务不可用,或者少统计了一个使用方会导致该使用方不可用,容易引入问题。
除了将公共组件中的controller配置为不可继承外,本申请实施例还将公共组件的业务逻辑全部设于service。更具体的,将业务逻辑全部放在service中的serviceImpl。通过这种配置,使得controller尽量薄,只做service接口的调用、参数的校验、响应的包装。
进一步的,本申请实施例在“controller不可继承”以及“业务逻辑全部设于service”的基础上对公共组件进行拓展时,将用于实现拓展服务的拓展工程配置为依赖该公共组件,从而使得拓展工程在对该公共组件进行服务拓展的同时,不会对该公共组件造成任何侵入(即,不会对该公共组件的主体进行任何修改)。具体的,可以通过代码依赖的方式将拓展工程配置为依赖该公共组件。
本申请实施例中所提出的公共组件,有两种方式对其进行服务拓展。
第一种方式:于服务器搭建集成有本公共实施例所提出拓展方法的拓展系统,该拓展系统存储有各个WEB服务公共组件(所存储的公共组件均被配置为controller不可继承,业务逻辑全部设于service)。用户通过终端向该拓展系统指定目标拓展的公共组件以及目标拓展的拓展服务,从而,该拓展系统自动调取出被指定的公共组件并按照本申请实施例所提出的拓展方法对该被指定的公共组件进行服务拓展,进而可以再将服务拓展后的该被指定的公共组件提供给用户进行使用。
第二种方式:于服务器搭建存储有各个WEB服务公共组件(所存储的公共组件均被配置为controller不可继承,业务逻辑全部设于service)的公共组件平台,用户通过终端从该拓展系统获取到待拓展的公共组件后,根据需求自行手动进行服务拓展。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
图1示出了本申请一实施例的公共组件以及其拓展之间的架构示意图。
如图1所示,该实施例中,公共组件的拓展依赖于公共组件进行服务拓展。服务拓展分为两种情况:一、新增全新的功能服务,这种情况下通过新增API接口实现服务拓展;二、对已有的服务进行修改,这种情况下通过服务覆盖实现服务拓展。
其中,通过服务覆盖实现服务拓展又分为两种情况:一、对于方法级别的服务,通过继承了serviceImpl类的java类ServiceImplExt进行服务覆盖,从而实现原有该方法级别服务的修改;二、对于类级别的服务,通过实现了service接口的实现类ServiceExtImpl进行服务覆盖,从而实现原有该类级别服务的修改。
通过服务覆盖实现服务拓展的情况下,拓展类(即,ServiceImplExt或者ServiceExtImpl)会覆盖掉原方法对应的serviceImpl。因此在原有的公共组件中,serviceImpl条件装配,只有在没有扩展类的时候才装载serviceImpl。
需要说明的是,该实施例只是示例性的说明,不应对本申请的功能和使用范围造成限制。
在本申请实施例所提出的改进的公共组件的基础上,即可进一步应用本申请实施例所提出的拓展方法,零侵入地实现对公共组件的强拓展。
图2示出了本申请一实施例的WEB服务公共组件的拓展方法流程图。如图所示,该方法包括:
步骤S110、通过依赖服务层或者数据访问层,新建依赖公共组件的拓展工程;
步骤S120、通过依赖该服务层,将拓展服务部署入该拓展工程;
步骤S130、基于该公共组件的启动类配置该拓展工程,以基于该公共组件的启动类触发该公共组件提供该拓展服务。
具体的,在本申请实施例所提供的改进的公共组件(controller不可继承,业务逻辑全部设于service)的基础上:通过依赖原公共组件的service或者dao,新建依赖该公共组件的拓展工程;由于用于实现功能服务的业务逻辑全部设于该公共组件的service,则通过依赖service,将拓展服务部署入该拓展工程;并基于该公共组件的启动类配置该拓展工程,从而可以在该公共组件的启动类的基础上触发该公共组件提供该拓展服务。
在详细展示进行服务拓展的可选实施例的完整过程之前,首先对本公开实施例的各处理过程分别进行展示。
在一实施例中,该方法还包括:将该公共组件的控制器层、该服务层以及该数据访问层分别封装入对应的子模块。
该实施例中,将公共组件的controller配置为不可继承,以及将业务逻辑全部设于service后,进一步的将controller、service、dao分别封装入对应的子模块。其中,将service封装入对应的子模块的过程包括:将service接口封装入对应的子模块,将serviceImpl封装入对应的子模块。
该实施例的优点在于,通过将公共组件配置为相互分离的子模块,使得服务拓展时可以根据需要进行依赖复用,充放利用公共组件中已有的实现,降低了代码重复的同时,提高了服务拓展的灵活性。
图3示出了本申请一实施例将公共组件封装为多个子模块的架构示意图。
如图3所示,该实施例中,将公共组件中的controller、serviceImpl、service接口、dao均进行模块化,分别封装入各自对应的子模块。通过这种架构,将公共组件划分为低耦合的多个子模块,从而可以根据需要依赖已有的serviceImpl子模块、service接口子模块、dao子模块进行服务扩展,便于依赖的实现,降低了服务拓展时代码重复,提高了服务拓展的灵活性。
需要说明的是,该实施例只是示例性的说明,不应对本申请的功能和使用范围造成限制。
在一实施例中,依赖该服务层,包括:通过将该服务层所在子模块作为依赖写入该拓展工程,实现依赖该服务层;
依赖该数据访问层,包括:通过将该数据访问层所在子模块作为依赖写入该拓展工程,实现依赖该数据访问层。
该实施例中,预先将公共组件的controller、service、dao分别封装入对应的子模块。在新建拓展工程的过程中,根据拓展服务的需要,可以通过将service子模块(包括service接口子模块以及serviceImpl子模块)作为依赖写入该拓展工程使得拓展工程依赖该公共组件的service;也可以通过将dao子模块作为依赖写入该拓展工程使得拓展工程依赖该公共组件的dao。
本申请实施例中,对公共组件进行服务拓展有两种情况:一、新增全新的功能服务;二、对已有的服务进行修改。故接下来对这两种情况下部署拓展服务的具体实施过程分别进行描述。
在一实施例中,通过依赖该服务层,将拓展服务部署入该拓展工程,包括:
通过依赖该服务层新增该拓展服务;
将该拓展服务部署入该拓展工程。
该实施例中,目标拓展的拓展服务相比于原公共组件是全新的。这种情况下,通过依赖原公共组件的service新增该拓展服务,再将新增的拓展服务部署入该拓展工程。其中,若原公共组件已被预先划分为各子模块,则可以通过将该公共组件的service子模块作为依赖写入拓展工程的方式,新增该拓展服务并将该拓展服务部署入拓展工程。
具体的,在一实施例中,预先将公共组件的controller、service、dao分别封装入对应的子模块。目标拓展的拓展服务相比于该公共组件是全新的。
则对该公共组件进行拓展的过程:新建一个SpringBoot工程作为拓展工程,并新建controller、service、dao实现该拓展服务。在实现该拓展服务的过程中,若需要使用该公共组件的service中的方法,则将该公共组件的service子模块作为依赖写入拓展工程的pom.xml中,然后使用相应的bean和方法;若还需要使用该公共组件的dao中的方法,则将该公共组件的dao子模块作为依赖写入拓展工程的pom.xml中,然后使用相应的bean和方法;若还需要使用该公共组件其他子模块的bean,则将所需使用的其他子模块作为依赖写入拓展工程的pom.xml中,然后使用相应的bean。
拓展完成后,启动拓展工程即可使得公共组件提供拓展服务。
需要说明的是,该实施例只是示例性的说明,不应对本申请的功能和使用范围造成限制。
在一实施例中,通过依赖该服务层,将拓展服务部署入该拓展工程,包括:
通过依赖该服务层对该公共组件已有的服务进行修改得到该拓展服务;
将该拓展服务部署入该拓展工程,并提高该拓展服务的注入优先级。
该实施例中,目标拓展的拓展服务相比于原公共组件,是对已有的服务进行修改。这种情况下,通过依赖原公共组件的service对该公共组件已有的服务进行修改得到该拓展服务,再将修改后的该拓展服务部署入该拓展工程,并提高该拓展服务的注入优先级(例如:使用@primary提高注入优先级)以使得该拓展服务能够覆盖掉该公共组件已有的服务。其中,若原公共组件已被预先划分为各子模块,则可以通过将该公共组件的service子模块作为依赖写入拓展工程并进行修改的方式,修改该公共组件已有的服务,得到修改后的该拓展服务并将该拓展服务部署入拓展工程。
进一步的,修改该公共组件的已有的服务的方式还可以进一步分为两种情况:一、对于方法级别的服务,通过继承serviceImpl的实现类进行服务覆盖,;二、对于类级别的服务,通过实现service中的service接口进行服务覆盖。
具体的,在一实施例中,预先将公共组件的controller、service、dao分别封装入对应的子模块。目标拓展的拓展服务相比于原公共组件,是对已有的服务进行修改。
若是对已有的方法级别的服务进行修改,则对该公共组件进行拓展的过程:新建一个SpringBoot工程作为拓展工程;将serviceImpl子模块作为依赖写入拓展工程的pom.xml中,再新建类继承相应的serviceImpl类,并重写该serviceImpl类中需要修改的方法。
若是对已有的类级别的服务进行修改,则对该公共组件进行拓展的过程:新建一个SpringBoot工程作为拓展工程;将service子模块作为依赖写入拓展工程的pom.xml中,再新建类实现相应的service接口,并按照拓展服务的逻辑实现该service接口中的所有方法。
拓展完成后,启动拓展工程即可使得公共组件提供拓展服务。
需要说明的是,该实施例只是示例性的说明,不应对本申请的功能和使用范围造成限制。
本申请实施例中,触发公共组件提供拓展服务有两种方式:一、通过拓展工程的启动类触发公共组件提供拓展服务;二、通过公共组件的启动类触发公共组件提供拓展服务。接下来对这两种方式下触发公共组件提供拓展服务的具体实施过程分别进行描述。
在一实施例中,基于该公共组件的启动类配置该拓展工程,以基于该公共组件的启动类触发该公共组件提供该拓展服务,包括:
新建该拓展工程的启动类;
获取该公共组件的启动类的注解配置;
将该注解配置拷贝至该拓展工程的启动类,以通过该拓展工程的启动类触发该公共组件提供该拓展服务。
该实施例中,通过拓展工程的启动类触发公共组件提供拓展服务。
具体的,新建拓展工程的启动类(拓展工程的启动类区别于公共组件的启动类),再将公共组件的启动类的注解配置复制并拷贝至该拓展工程的启动类。从而通过该拓展工程的启动类启动该拓展工程的同时还启动公共组件,触发该公共组件提供该拓展工程中的拓展服务。
该实施例的优点在于,通过拓展工程的启动类提供拓展服务,在需要新增已有服务的时候可以直接在拓展工程的启动类添加相应的注解,不会对公共组件造成侵入;拓展工程的启动类是自定义得到的,更便于拓展的进行;拓展工程依旧是结构清晰的组件工程,拓展开发时能够很轻易地从工程代码中定位到启动类并进行启动,避免了依赖jar包寻找启动类的这一处理。
在一实施例中,基于该公共组件的启动类配置该拓展工程,以基于该公共组件的启动类触发该公共组件提供该拓展服务,包括:
在该拓展工程中配置关联该公共组件的启动类的启动类路径,以通过该公共组件的启动类触发该公共组件提供该拓展服务。
该实施例中,通过公共组件的启动类触发公共组件提供拓展服务。
具体的,在拓展工程的pom.xml中配置启动类路径,该启动类路径与公共组件的启动类相关联。从而通过该公共组件的启动类启动公共组件后,再经由该启动类路径启动拓展工程,触发该公共组件提供该拓展工程中的拓展服务。
图4示出了根据本申请一实施例的WEB服务公共组件的拓展装置,所述装置包括:
工程新建模块210,配置为通过依赖所述服务层或者所述数据访问层,新建依赖所述公共组件的拓展工程;
工程部署模块220,配置为通过依赖所述服务层,将拓展服务部署入所述拓展工程;
工程配置模块230,配置为基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务。
在本申请的一示例性实施例中,所述装置配置为:将所述公共组件的控制器层、所述服务层以及所述数据访问层分别封装入对应的子模块。
在本申请的一示例性实施例中,所述装置配置为:
通过将所述服务层所在子模块作为依赖写入所述拓展工程,实现依赖所述服务层;
通过将所述数据访问层所在子模块作为依赖写入所述拓展工程,实现依赖所述数据访问层。
在本申请的一示例性实施例中,所述装置配置为:
通过依赖所述服务层新增所述拓展服务;
将所述拓展服务部署入所述拓展工程。
在本申请的一示例性实施例中,所述装置配置为:
通过依赖所述服务层对所述公共组件已有的服务进行修改得到所述拓展服务;
将所述拓展服务部署入所述拓展工程,并提高所述拓展服务的注入优先级。
在本申请的一示例性实施例中,所述装置配置为:
新建所述拓展工程的启动类;
获取所述公共组件的启动类的注解配置;
将所述注解配置拷贝至所述拓展工程的启动类,以通过所述拓展工程的启动类触发所述公共组件提供所述拓展服务。
在本申请的一示例性实施例中,所述装置配置为:
在所述拓展工程中配置关联所述公共组件的启动类的启动类路径,以通过所述公共组件的启动类触发所述公共组件提供所述拓展服务。
下面参考图5来描述根据本申请实施例的WEB服务公共组件的拓展电子设备30。图5显示的电子设备30仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,电子设备30以通用计算设备的形式表现。电子设备30的组件可以包括但不限于:上述至少一个处理单元310、上述至少一个存储单元320、连接不同系统组件(包括存储单元320和处理单元310)的总线330。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元310执行,使得所述处理单元310执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元310可以执行如图2中所示的各个步骤。
存储单元320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)3201和/或高速缓存存储单元3202,还可以进一步包括只读存储单元(ROM)3203。
存储单元320还可以包括具有一组(至少一个)程序模块3205的程序/实用工具3204,这样的程序模块3205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备30也可以与一个或多个外部设备400(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备30交互的设备通信,和/或与使得该电子设备30能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口350进行。输入/输出(I/O)接口350与显示单元340相连。并且,电子设备30还可以通过网络适配器360与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器360通过总线330与电子设备30的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。
在本申请的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本申请的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JAVA、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。

Claims (10)

1.一种WEB服务公共组件的拓展方法,所述公共组件包括用于与外界进行参数交换的控制器层、在所述控制器层的调用下用于进行服务的服务层、在所述服务层的调用下用于操作数据库的数据访问层,其特征在于,所述控制器层不可继承,所述公共组件的业务逻辑集中于所述服务层,所述方法包括:
通过依赖所述服务层或者所述数据访问层,新建依赖所述公共组件的拓展工程;
通过依赖所述服务层,将拓展服务部署入所述拓展工程;
基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述公共组件的控制器层、所述服务层以及所述数据访问层分别封装入对应的子模块。
3.根据权利要求2所述的方法,其特征在于,
依赖所述服务层,包括:通过将所述服务层所在子模块作为依赖写入所述拓展工程,实现依赖所述服务层;
依赖所述数据访问层,包括:通过将所述数据访问层所在子模块作为依赖写入所述拓展工程,实现依赖所述数据访问层。
4.根据权利要求1所述的方法,其特征在于,通过依赖所述服务层,将拓展服务部署入所述拓展工程,包括:
通过依赖所述服务层新增所述拓展服务;
将所述拓展服务部署入所述拓展工程。
5.根据权利要求1所述的方法,其特征在于,通过依赖所述服务层,将拓展服务部署入所述拓展工程,包括:
通过依赖所述服务层对所述公共组件已有的服务进行修改得到所述拓展服务;
将所述拓展服务部署入所述拓展工程,并提高所述拓展服务的注入优先级。
6.根据权利要求1所述的方法,其特征在于,基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务,包括:
新建所述拓展工程的启动类;
获取所述公共组件的启动类的注解配置;
将所述注解配置拷贝至所述拓展工程的启动类,以通过所述拓展工程的启动类触发所述公共组件提供所述拓展服务。
7.根据权利要求1所述的方法,其特征在于,基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务,包括:
在所述拓展工程中配置关联所述公共组件的启动类的启动类路径,以通过所述公共组件的启动类触发所述公共组件提供所述拓展服务。
8.一种WEB服务公共组件的拓展装置,所述公共组件包括用于与外界进行参数交换的控制器层、在所述控制器层的调用下用于进行服务的服务层、在所述服务层的调用下用于操作数据库的数据访问层,其特征在于,所述装置包括:
工程新建模块,配置为通过依赖所述服务层或者所述数据访问层,新建依赖所述公共组件的拓展工程;
工程部署模块,配置为通过依赖所述服务层,将拓展服务部署入所述拓展工程;
工程配置模块,配置为基于所述公共组件的启动类配置所述拓展工程,以基于所述公共组件的启动类触发所述公共组件提供所述拓展服务。
9.一种WEB服务公共组件的拓展电子设备,其特征在于,包括:
存储器,存储有计算机可读指令;
处理器,读取存储器存储的计算机可读指令,以执行权利要求1-7中的任一个所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-7中的任一个所述的方法。
CN202110166658.XA 2021-02-04 2021-02-04 Web服务公共组件的拓展方法、装置、电子设备及存储介质 Pending CN114936046A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110166658.XA CN114936046A (zh) 2021-02-04 2021-02-04 Web服务公共组件的拓展方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110166658.XA CN114936046A (zh) 2021-02-04 2021-02-04 Web服务公共组件的拓展方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114936046A true CN114936046A (zh) 2022-08-23

Family

ID=82862876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110166658.XA Pending CN114936046A (zh) 2021-02-04 2021-02-04 Web服务公共组件的拓展方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114936046A (zh)

Similar Documents

Publication Publication Date Title
KR102154757B1 (ko) 콜경로 파인더
US11010215B2 (en) Recommending applications based on call requests between applications
CN113377348B (zh) 应用于任务引擎的任务调整方法、相关装置和存储介质
CN107609004B (zh) 应用程序埋点方法和装置、计算机设备和存储介质
CN108549568B (zh) 应用入口处理方法、装置、存储介质及电子设备
CN111538659B (zh) 业务场景的接口测试方法、系统、电子设备和存储介质
CN109408136A (zh) 信息处理方法、装置、存储介质及电子设备
US20160246582A1 (en) Generic Semantic Configuration Service
US20220066860A1 (en) System for resolution of technical issues using computing system-specific contextual data
US10936747B2 (en) Privacy annotation from differential analysis of snapshots
CN110806873A (zh) 目标控件确定方法、装置、电子设备及存储介质
CN113885886A (zh) 活动业务的处理方法、设备、系统及存储介质
CN116700745A (zh) 基于容器云平台的应用部署方法、装置、电子设备和介质
CN115794076A (zh) 基于模型驱动的客制化方法、系统、电子设备和存储介质
CN115760391A (zh) 区块链中智能合约更改方法、装置、电子设备及存储介质
CN114936046A (zh) Web服务公共组件的拓展方法、装置、电子设备及存储介质
CN113031964B (zh) 一种大数据应用的管理方法、装置、设备及存储介质
CN114461909A (zh) 信息处理方法、信息处理装置、电子设备和存储介质
CN115485677A (zh) 在分布式数据存储环境中的安全数据复制
CN112650509B (zh) 应用安装包生成方法、装置、计算机设备和存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN115766419B (zh) 一种分布式环境下数字序列号生成方法和装置
US9703532B1 (en) Dynamically updating class instances based on class definition changes
CN114553688B (zh) 云计算部署方法、装置、设备及计算机可读存储介质
EP4191407A1 (en) Method and device for generating and registering ui service package and loading ui service

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