CN112764723A - 一种基于Spring无侵入修改标准产品业务系统和方法 - Google Patents
一种基于Spring无侵入修改标准产品业务系统和方法 Download PDFInfo
- Publication number
- CN112764723A CN112764723A CN202110080501.5A CN202110080501A CN112764723A CN 112764723 A CN112764723 A CN 112764723A CN 202110080501 A CN202110080501 A CN 202110080501A CN 112764723 A CN112764723 A CN 112764723A
- Authority
- CN
- China
- Prior art keywords
- class
- annotation
- spring
- standard
- standard product
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Spring无侵入修改标准产品业务系统和方法,包括,标准产品业务Spring系统以及应用于标准产品业务Spring系统的逻辑控制系统;其中逻辑控制系统包括QzingService注解单元、Spring扫描器、标准产品业务分类映射处理单元、Bean定义注册表生成器;QzingService注解单元与Spring扫描器连接;Spring扫描器与标准产品业务分类映射处理单元连接;标准产品业务分类映射处理单元与Bean定义注册表生成器连接,本发明通过继承标准产品业务类,实现无侵入修改的修改标准产品业务,对二次开发的代码和标准产品代码区分更加清晰。
Description
技术领域
本发明属于信息服务领域,涉及一种基于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属性)。通过继承标准产品业务类,实现无侵入修改的修改标准产品业务,对二次开发的代码和标准产品代码区分更加清晰。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种基于Spring无侵入修改标准产品业务系统,其特征在于,包括:
标准产品业务Spring系统以及应用于所述标准产品业务Spring系统的逻辑控制系统;
其中,所述逻辑控制系统,包括,QzingService注解单元、Spring扫描器、标准产品业务分类映射处理单元、Bean定义注册表生成器;
所述标准产品业务Spring系统,用于根据产品经理设计和整理的客户需求,构建基于产品标准API类的产品标准实现类;
所述逻辑控制系统,用于实现所述标准产品业务Spring系统的无侵入修改功能;
所述QzingService注解单元与所述Spring扫描器连接;
所述Spring扫描器与所述标准产品业务分类映射处理单元连接;
所述标准产品业务分类映射处理单元与所述Bean定义注册表生成器连接。
2.如权利要求1所述一种基于Spring无侵入修改标准产品业务系统,其特征在于,
所述QzingService注解单元,用于通过注解所述标准产品业务的产品标准实现类,形成注解类,确定所述标准产品业务中的优先级关系;
所述QzingService注解单元,包括api单元和priority单元;
所述api单元用于描述所述注解类对应的所述产品标准API类;
所述priority单元用于描述所述注解类的优先级。
3.如权利要求1所述一种基于Spring无侵入修改标准产品业务系统,其特征在于,
所述Spring扫描器用于扫描具有所述QzingService注解单元的注解类,通过列表进行暂存。
4.如权利要求1所述一种基于Spring无侵入修改标准产品业务系统,其特征在于,
所述标准产品业务分类映射处理单元,用于基于所述产品标准API类的API值,通过所述QzingService注解单元,构建初始映射关系表模型,通过遍历所述产品标准API类,构建目标映射关系表模型,通过所述目标映射关系表模型,构建所述产品标准实现类。
5.如权利要求1所述的一种基于Spring无侵入修改标准产品业务系统,其特征在于,
所述Bean定义注册表生成器,用于为所述标准产品业务分类映射处理单元提供基于Spring的Bean定义注册表。
6.如权利要求1-5任一权利要求所述的一种基于Spring无侵入修改标准产品业务方法,其特征在于,包括以下步骤:
S1.根据所述客户需求,基于所述产品标准实现类,构建所述标准产品业务Spring系统;
S2.基于所述标准产品业务Spring系统,依据所述产品标准实现类,构建所述QzingService注解单元,获得所述注解类;
S3.通过创建所述Spring注解扫描器,将所述注解类,以列表形式暂存;
S4.基于所述API值和注解类,构建初始映射关系表模型,通过遍历所述产品标准API类,基于所述初始映射关系表模型,构建所述目标映射关系表模型;
S5.基于所述Bean定义注册表生成器,依据所述目标映射关系表模型的Bean注册对象,通过所述Bean注册对象,将所述目标映射关系表模型注册到所述标准产品业务Spring系统,用于实现无侵入修改标准产品业务的功能。
7.如权利要求6所述一种基于Spring无侵入修改标准产品业务方法,其特征在于,
通过所述QzingService注解单元,确定所述注解类的优先级;
所述初始映射关系表模型,通过所述注解类和优先级,构建所述目标映射关系表模型。
8.如权利要求7所述一种基于Spring无侵入修改标准产品业务方法,其特征在于,
通过判断所述初始映射关系表模型的当前循环对象类实现的当前注解类是否已有其他类实现,如果没有被其他类实现,则将所述当前循环对象类的当前注解类、实现类和优先级补充到所述初始映射关系表模型;如果所述当前注解类已有其他类实现,则判断两者优先级,如果所述当前注解类优先级高,则以所述当前注解类覆盖已有实现类的映射关系,用于更新所述初始映射关系表模型,如果所述当前注解类的优先级低,则忽略所述当前注解类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110080501.5A CN112764723B (zh) | 2021-01-21 | 2021-01-21 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110080501.5A CN112764723B (zh) | 2021-01-21 | 2021-01-21 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764723A true CN112764723A (zh) | 2021-05-07 |
CN112764723B CN112764723B (zh) | 2021-09-17 |
Family
ID=75702194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110080501.5A Active CN112764723B (zh) | 2021-01-21 | 2021-01-21 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764723B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120311467A1 (en) * | 2011-05-31 | 2012-12-06 | Accenture Global Services Limited | Computer-implemented method, system and computer program product for displaying a user interface component |
CN109683886A (zh) * | 2018-11-28 | 2019-04-26 | 国云科技股份有限公司 | 一种多元化接口文档生成方法 |
CN109729149A (zh) * | 2018-12-03 | 2019-05-07 | 国云科技股份有限公司 | 一种基于注解的微服务框架实现方法 |
CN109766080A (zh) * | 2019-01-22 | 2019-05-17 | 努比亚技术有限公司 | 微服务注册方法、装置、电子设备及可读存储介质 |
CN110275702A (zh) * | 2019-06-27 | 2019-09-24 | 浪潮卓数大数据产业发展有限公司 | 一种Java Web项目的表现层数据格式化系统 |
CN111324333A (zh) * | 2018-12-17 | 2020-06-23 | 中移(杭州)信息技术有限公司 | 一种基于组件化的软件开发方法及装置 |
CN111858101A (zh) * | 2020-07-28 | 2020-10-30 | 平安医疗健康管理股份有限公司 | 面向云架构系统的适配方法、装置、设备及存储介质 |
-
2021
- 2021-01-21 CN CN202110080501.5A patent/CN112764723B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120311467A1 (en) * | 2011-05-31 | 2012-12-06 | Accenture Global Services Limited | Computer-implemented method, system and computer program product for displaying a user interface component |
CN109683886A (zh) * | 2018-11-28 | 2019-04-26 | 国云科技股份有限公司 | 一种多元化接口文档生成方法 |
CN109729149A (zh) * | 2018-12-03 | 2019-05-07 | 国云科技股份有限公司 | 一种基于注解的微服务框架实现方法 |
CN111324333A (zh) * | 2018-12-17 | 2020-06-23 | 中移(杭州)信息技术有限公司 | 一种基于组件化的软件开发方法及装置 |
CN109766080A (zh) * | 2019-01-22 | 2019-05-17 | 努比亚技术有限公司 | 微服务注册方法、装置、电子设备及可读存储介质 |
CN110275702A (zh) * | 2019-06-27 | 2019-09-24 | 浪潮卓数大数据产业发展有限公司 | 一种Java Web项目的表现层数据格式化系统 |
CN111858101A (zh) * | 2020-07-28 | 2020-10-30 | 平安医疗健康管理股份有限公司 | 面向云架构系统的适配方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112764723B (zh) | 2021-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107979508B (zh) | 微服务测试方法及装置 | |
Poslad et al. | The FIPA-OS agent platform: Open source for open standards | |
Dedecker et al. | Ambient-oriented programming in ambienttalk | |
US7266761B2 (en) | Special API interface for interfacing an application with a TWAIN module, negotiating and presenting a user interface for inserting an image into a document | |
US7320120B2 (en) | Pluggable notations and semantics for visual modeling elements | |
US8347214B2 (en) | Automated interface-specification generation for enterprise architectures | |
CN100405292C (zh) | 对象串行化方法 | |
EP1727045A2 (en) | Application framework for use with net-centric application program architectures | |
US20220405094A1 (en) | Cross-platform context-specific automation scheduling | |
US7484202B2 (en) | Method, system and program product for retrofitting collaborative components into existing software applications | |
CN112035090B (zh) | 基于容器化技术实现智能合约智慧化管理系统及方法 | |
KR101027259B1 (ko) | 웹 서비스의 메시지 지향 구축 | |
US20120079451A1 (en) | Unified process to design, develop, and configure user interfaces | |
JPH0713766A (ja) | オブジェクト指向コンピュータ・システムおよびオブジェクト・クラス管理方法 | |
US20060085745A1 (en) | System and method for displaying a user interface object using an associated style | |
CN112764723B (zh) | 一种基于Spring无侵入修改标准产品业务系统和方法 | |
CN108965901B (zh) | 一种用于直播平台的显示方法及电子设备 | |
Atkinson et al. | Systematic stereotype usage | |
González et al. | Highly dynamic behaviour adaptability through prototypes with subjective multimethods | |
CN111178846B (zh) | 一种工作流文件生成方法、装置、设备及存储介质 | |
Heinroth et al. | Human-computer interaction in next generation ambient intelligent environments | |
CN105468438B (zh) | 在应用程序中进行进程回收处理的方法及装置 | |
CN106874010A (zh) | 一种Android系统中ListView快速分页加载的方法 | |
CN109660379B (zh) | 一种网络方法和系统、及终端 | |
US20030056024A1 (en) | Method of handling asynchronous events |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |