首页> 中国专利> 一种基于Spring无侵入修改标准产品业务系统和方法

一种基于Spring无侵入修改标准产品业务系统和方法

摘要

本发明公开了一种基于Spring无侵入修改标准产品业务系统和方法,包括,标准产品业务Spring系统以及应用于标准产品业务Spring系统的逻辑控制系统;其中逻辑控制系统包括QzingService注解单元、Spring扫描器、标准产品业务分类映射处理单元、Bean定义注册表生成器;QzingService注解单元与Spring扫描器连接;Spring扫描器与标准产品业务分类映射处理单元连接;标准产品业务分类映射处理单元与Bean定义注册表生成器连接,本发明通过继承标准产品业务类,实现无侵入修改的修改标准产品业务,对二次开发的代码和标准产品代码区分更加清晰。

著录项

  • 公开/公告号CN112764723A

    专利类型发明专利

  • 公开/公告日2021-05-07

    原文格式PDF

  • 申请/专利权人 奇秦科技(北京)股份有限公司;

    申请/专利号CN202110080501.5

  • 申请日2021-01-21

  • 分类号G06F8/20(20180101);

  • 代理机构11562 北京东方盛凡知识产权代理事务所(普通合伙);

  • 代理人王颖

  • 地址 100193 北京市海淀区西北旺东路10号院东区22号楼4层A420

  • 入库时间 2023-06-19 10:54:12

说明书

技术领域

本发明属于信息服务领域,涉及一种基于Spring无侵入修改标准产品业务系统和方法。

背景技术

目前比较成熟SPRING有控制反转和依赖注入的方式改变业务的不同的变化,我们的需求出现变动时,工厂模式会需要进行相应的变化。但是IOC的反射机制允许我们不重新编译代码,因为它的对象都是动态生成的。

控制反转:即IOC(Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。

依赖注入基本原则是:应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由IoC容器负责,“查找资源”的逻辑应该从应用组件的代码中抽取出来,交给IoC容器负责。

依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念,具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。

这种方式有个弊端就是整个类都需要替换,导致项目开发的时候需要实现很多不必要的方法,并且实际用的时候不灵活,目前所有注解都在代码里,所以还需要修改产品标准代码才能达到服务替换的目的。

目前项目上经常遇到产品逻辑不能满足客户需求的情况,需要项目开发人员深入产品代码,修改产品逻辑,这样导致项目开发人员学习门槛变高,同时也增加了bug风险。

发明内容

为了解决上述的问题,本发明提出的系统和方法,在产品开发过程中不用修改产品代码,通过注解实现项目业务逻辑,从而达到满足客户需求的目的的同时,降低项目风险,出问题也好及时定位。

本发明提供一种基于Spring无侵入修改标准产品业务系统,包括:

标准产品业务Spring系统以及应用于所述标准产品业务Spring系统的逻辑控制系统;

其中,逻辑控制系统,包括,QzingService注解单元、Spring扫描器、标准产品业务分类映射处理单元、Bean定义注册表生成器;

标准产品业务Spring系统,用于根据产品经理设计和整理的客户需求,构建基于产品标准API类的产品标准实现类;

逻辑控制系统,用于实现标准产品业务Spring系统的无侵入修改功能;

QzingService注解单元与Spring扫描器连接;

Spring扫描器与标准产品业务分类映射处理单元连接;

标准产品业务分类映射处理单元与Bean定义注册表生成器连接。

优选地,QzingService注解单元,用于通过注解标准产品业务的产品标准实现类,形成注解类,确定标准产品业务中的优先级关系;

QzingService注解单元,包括api单元和priority单元;

api单元用于描述注解类对应的产品标准API类;

priority单元用于描述注解类的优先级。

优选地,Spring扫描器用于扫描具有QzingService注解单元的注解类,通过列表进行暂存。

优选地,标准产品业务分类映射处理单元,用于基于产品标准API类的API值,通过QzingService注解单元,构建初始映射关系表模型,通过遍历所述产品标准API类,构建目标映射关系表模型,通过目标映射关系表模型,构建所述产品标准实现类。

优选地,Bean定义注册表生成器,用于为标准产品业务分类映射处理单元提供基于Spring的Bean定义注册表。

一种基于Spring无侵入修改标准产品业务方法,包括以下步骤:

S1.根据客户需求,基于产品标准实现类,构建标准产品业务Spring系统;

S2.基于标准产品业务Spring系统,依据产品标准实现类,构建QzingService注解单元,获得注解类;

S3.通过创建Spring注解扫描器,将注解类,以列表形式暂存;

S4.基于API值和注解类,构建初始映射关系表模型,通过遍历产品标准API类,基于初始映射关系表模型,构建目标映射关系表模型;

S5.基于Bean定义注册表生成器,基于目标映射关系表模型的Bean注册对象,通过Bean注册对象,将目标映射关系表模型注册到标准产品业务Spring系统,用于实现无侵入修改标准产品业务的功能。

优选地,通过QzingService注解单元,确定注解类的优先级;

初始映射关系表模型,通过注解类和优先级,构建目标映射关系表模型。

优选地,通过判断初始映射关系表模型的当前循环对象类实现的当前注解类是否已有其他类实现,如果没有被其他类实现,则将当前循环对象类的当前注解类、实现类和优先级补充到初始映射关系表模型;如果当前注解类已有其他类实现,则判断两者优先级,如果当前注解类优先级高,则以当前注解类覆盖已有实现类的映射关系,用于更新初始映射关系表模型,如果当前注解类的优先级低,则忽略当前注解类。

本发明的积极进步效果在于:

本发明用于在产品开发过程中,首先根据产品经理整理的需求,定义出产品标准API类。由产品研发人员开发产品标准实现类,用于实现产品经理设计的标准业务需求。该实现类使用QZingService进行注解,api属性定义为产品标准API类,priority属性配置为0。产品应用于项目时,为实现客户的特殊业务,创建一个新的API实现类来继承产品标准实现类,同样使用QzingService进行注册,并且采用大于0的优先级(priority属性)。通过继承标准产品业务类,实现无侵入修改的修改标准产品业务,对二次开发的代码和标准产品代码区分更加清晰。

附图说明

图1为本发明所述的系统流程图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前产品开发项目中,经常遇到产品逻辑不能满足客户需求的情况,需要项目开发人员深入产品代码,修改产品逻辑,这样导致项目开发人员学习门槛变高,同时也增加了bug风险。本发明提出的框架,项目完全不用修改产品代码,通过注解实现项目业务逻辑,从而达到满足客户需求的目的的同时,降低项目风险,出问题也好及时定位。

如图1所示,本发明提供一种基于Spring无侵入修改标准产品业务系统,包括:

标准产品业务Spring系统以及应用于所述标准产品业务Spring系统的逻辑控制系统;

其中,逻辑控制系统,包括,QzingService注解单元、Spring扫描器、标准产品业务分类映射处理单元、Bean定义注册表生成器;

标准产品业务Spring系统,用于根据产品经理设计和整理的客户需求,构建基于产品标准API类的产品标准实现类;

逻辑控制系统,用于实现标准产品业务Spring系统的无侵入修改功能;

QzingService注解单元与Spring扫描器连接;

Spring扫描器与标准产品业务分类映射处理单元连接;

标准产品业务分类映射处理单元与Bean定义注册表生成器连接。

QzingService注解单元,用于通过注解标准产品业务的产品标准实现类,形成注解类,确定标准产品业务中的优先级关系;

QzingService注解单元,包括api单元和priority单元;

api单元用于描述注解类对应的产品标准API类;

priority单元用于描述注解类的优先级。

Spring扫描器用于扫描具有QzingService注解单元的注解类,通过列表进行暂存。

标准产品业务分类映射处理单元,用于基于产品标准API类的API值,通过QzingService注解单元,构建初始映射关系表模型,通过遍历所述产品标准API类,构建目标映射关系表模型,通过目标映射关系表模型,构建所述产品标准实现类。

Bean定义注册表生成器,用于为标准产品业务分类映射处理单元提供基于Spring的Bean定义注册表。

一种基于Spring无侵入修改标准产品业务方法,包括以下步骤:

S1.根据客户需求,基于产品标准实现类,构建标准产品业务Spring系统;

S2.基于标准产品业务Spring系统,依据产品标准实现类,构建QzingService注解单元,获得注解类;

S3.通过创建Spring注解扫描器,将注解类,以列表形式暂存;

S4.基于API值和注解类,构建初始映射关系表模型,通过遍历产品标准API类,基于初始映射关系表模型,构建目标映射关系表模型;

S5.基于Bean定义注册表生成器,基于目标映射关系表模型的Bean注册对象,通过Bean注册对象,将目标映射关系表模型注册到标准产品业务Spring系统,用于实现无侵入修改标准产品业务的功能。

通过QzingService注解单元,确定注解类的优先级;

初始映射关系表模型,通过注解类和优先级,构建目标映射关系表模型。

通过判断初始映射关系表模型的当前循环对象类实现的当前注解类是否已有其他类实现,如果没有被其他类实现,则将当前循环对象类的当前注解类、实现类和优先级补充到初始映射关系表模型;如果当前注解类已有其他类实现,则判断两者优先级,如果当前注解类优先级高,则以当前注解类覆盖已有实现类的映射关系,用于更新初始映射关系表模型,如果当前注解类的优先级低,则忽略当前注解类。

步骤一,创建一个自定义注解QZingService,这个注解包含两个参数,api和priority,api代表使用该注解的类实现的是哪一个服务API,priority代表当前类实现的优先级。所有使用了该注解的类,称之为API的实现。在定义业务服务的时候可以对其使用注解QZingService描述当前业务服务是哪个API的实现以及实现的优先级。

步骤二,创建一个Spring注解扫描器,以扫描所有具有@QZingService注解的类,扫描到的类,使用一个列表进行暂存。

步骤三,对步骤二扫描到的业务服务进行处理:

1、建立一个键值对格式的映射关系表,键为API,对应QZingService的api属性,值为api实现类和优先级,对应扫描到的类和QZingService的priority属性;

2、循环遍历扫描到的类列表,判断当前循环对象类实现的api是否已有其他类实现过,如果尚未被其他类实现过,则直接将该类的api、实现类和优先级记录映射关系;如果当前类的api已有其他类实现,则判断两者的优先级,如果当前类的优先级更高,则以当前类覆盖已有实现类的映射关系,反之则忽略当前类;

3、等待所有类全部处理完成后,得到最终的映射关系表。

步骤四,取出步骤三的处理结果,为每个类创建一个Spring的Bean注册对象,并将其注册到Spring的Bean定义注册表(BeanDefinitionRegistry)。

在产品开发过程中,首先根据产品经理整理的需求,定义出产品标准API类。由产品研发人员开发产品标准实现类,用于实现产品经理设计的标准业务需求。该实现类使用QZingService进行注解,api属性定义为产品标准API类,priority属性配置为0。产品应用于项目时,为实现客户的特殊业务,创建一个新的API实现类来继承产品标准实现类,同样使用QzingService进行注册,并且采用大于0的优先级(priority属性)。通过继承标准产品业务类,实现无侵入修改的修改标准产品业务,对二次开发的代码和标准产品代码区分更加清晰。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号