掌桥专利:专业的专利平台
掌桥专利
首页

一种数据校验的方法、装置和存储介质

文献发布时间:2023-06-19 13:46:35


一种数据校验的方法、装置和存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种数据校验的方法、装置和存储介质。

背景技术

在互联网行业的各种业务系统中校验环节必不可少。其中,包括对用户前端输入的参数校验,对后端包含逻辑的业务校验,以及对基础技术层面的代码校验等。

业界内关于校验方面有很多方案,大体都集中在对数据参数本身的校验,其中广泛适用的是bean validation的注解方式校验,其可以进行参数的判空、大小、长度等基础的数据校验。但该框架无法对包含具体业务逻辑进行校验,其次无法支持在一个参数中的属性依赖另一个属性的校验结果来校验本身这种类似场景。如果想进行相关业务逻辑的参数校验,只能将代码开发在业务方法中,这样对业务方法侵入度很高。

发明内容

本申请实施例提供了一种数据校验的方法,克服了不能无侵入的实现相关业务逻辑的校验的问题。

该方法包括:

获取待校验插件,其中,所述待校验插件中包括待校验业务逻辑信息,所述待校验业务逻辑信息中的待校验参数标记有包含与所述待校验业务逻辑信息对应的校验策略的自定义注解;

注册所述自定义注解中的所述校验策略,并建立所述待校验插件和对应的所述校验策略之间的映射关系;

基于所述映射关系,为所述待校验插件配置包含相应所述校验策略的校验包路径;

在所述校验包路径内基于所述校验策略执行所述待校验插件中的所述待校验业务逻辑信息,并对所述待校验参数进行校验。

可选地,识别所述待校验插件;

基于JAVA类反射机制将所述待校验插件反射成待校验插件类,并缓存所述待校验插件类。

可选地,读取缓存,在所述缓存中查询与识别到的所述待校验插件对应的所述待校验插件类,并在查询到所述待校验插件类时直接调用该所述待校验插件类。

可选地,基于所述映射关系,为所述待校验插件类选取相应的所述校验策略,并确定与将所述待校验插件类相关的所述校验包路径。

在本发明的另一个实施例中,提供了一种数据校验的装置,该装置包括:

获取模块,用于获取待校验插件,其中,所述待校验插件中包括待校验业务逻辑信息,所述待校验业务逻辑信息中的待校验参数标记有包含与所述待校验业务逻辑信息对应的校验策略的自定义注解;

注册模块,用于注册所述自定义注解中的所述校验策略,并建立所述待校验插件和对应的所述校验策略之间的映射关系;

配置模块,用于基于所述映射关系,为所述待校验插件配置包含相应所述校验策略的校验包路径;

校验模块,用于在所述校验包路径内基于所述校验策略执行所述待校验插件中的所述待校验业务逻辑信息,并对所述待校验参数进行校验。

可选地,所述装置进一步包括:

识别模块,用于识别所述待校验插件;

反射模块,用于基于JAVA类反射机制将所述待校验插件反射成待校验插件类,并缓存所述待校验插件类。

可选地,所述装置进一步包括:

查询模块,用于读取缓存,在所述缓存中查询与识别到的所述待校验插件对应的所述待校验插件类,并在查询到所述待校验插件类时直接调用该所述待校验插件类。

可选地,所述配置模块进一步用于:

基于所述映射关系,为所述待校验插件类选取相应的所述校验策略,并确定与将所述待校验插件类相关的所述校验包路径。

在本发明的另一个实施例中,提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行上述一种数据校验的方法中的各个步骤。

在本发明的另一个实施例中,提供了一种终端设备,包括处理器,所述处理器用于执行上述一种数据校验的方法中的各个步骤。

基于上述实施例,首先获取待校验插件,其中,待校验插件中包括待校验业务逻辑信息,待校验业务逻辑信息中的待校验参数标记有包含与待校验业务逻辑信息对应的校验策略的自定义注解,其次,注册自定义注解中的校验策略,并建立待校验插件和对应的校验策略之间的映射关系,进一步地,基于映射关系,为待校验插件配置包含相应校验策略的校验包路径,最后,在校验包路径内基于校验策略执行待校验插件中的待校验业务逻辑信息,并对待校验参数进行校验。本申请实施例通过将待校验业务逻辑信息写入待校验插件,为待校验插件设置自定义校验策略进行校验,可以无代码侵入的实现复杂的业务逻辑校验。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了为本申请实施例100所提供的一种数据校验的方法的示意图;

图2示出了本申请实施例200提供的一种数据校验的方法中数据交互的示意图;

图3示出了本申请实施例300提供的一种数据校验的方法的具体流程的示意图;

图4示出了本申请实施例400还提供一种数据校验的装置的示意图;

图5示出了本申请实施例500所提供的一种终端设备的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。

基于现有技术中的问题,本申请实施例提供了一种数据校验的方法,主要适用于计算机技术领域。通过自定义注解的方式,在需要校验的参数上标记注解,同时定制需要校验的业务逻辑插件,则系统执行过程中就会依照自定义的业务逻辑来校验,无需手动在业务方法写入代码来实现复杂的参数业务判断,将参数校验环节前置到执行业务逻辑前校验,同时支持动态随时增加业务逻辑校验,可扩展。进一步地,如图1所示,为本申请实施例100提供的一种数据校验的方法的流程示意图。其中,详细步骤如下:

步骤S11,获取待校验插件。

本步骤中,用户自定义需要校验的待校验业务逻辑信息,并开发包含该待校验业务逻辑信息的待校验插件。待校验插件中包括待校验业务逻辑信息,其中,待校验业务逻辑信息为业务实体及其流程和约束性规则的实现过程的封装。进一步地,待校验业务逻辑信息中的待校验参数标记有包含与待校验业务逻辑信息对应的校验策略的自定义注解。校验策略为对待校验业务逻辑信息及待校验参数具体的校验规则。这里,将用户需要进行的校验策略以自定义注解的方式标注在待校验业务逻辑信息中的待校验参数上,并封装为待校验插件。

步骤S12,注册自定义注解中的校验策略,并建立待校验插件和对应的校验策略之间的映射关系。

本步骤中,校验系统获取待校验插件中的自定义注解后,为是校验器识别自定义注解中携带的校验策略,对校验策略进行自动映射并注册。进一步地,在获取自定义注解的同时,建立自定义注解中的校验策略与所属的待校验插件的之间的映射关系。其中,待校验插件可对应多个校验策略。

步骤S13,基于映射关系,为待校验插件配置包含相应校验策略的校验包路径。

本步骤中,校验系统配置需要进行校验的校验包路径。具体地,基于前述映射关系,为每个待校验插件配置包含相应校验策略的校验包路径。

步骤S14,在校验包路径内基于校验策略执行待校验插件中的待校验业务逻辑信息,并对待校验参数进行校验。

本步骤中,校验系统在需要校验的校验包路径内根据用户选择的校验策略来执行待校验插件中的待校验业务逻辑信息,实现对校验业务逻辑信息和待校验参数的校验。

如上所述,基于上述实施例,首先获取待校验插件,其中,待校验插件中包括待校验业务逻辑信息,待校验业务逻辑信息中的待校验参数标记有包含与待校验业务逻辑信息对应的校验策略的自定义注解,其次,注册自定义注解中的校验策略,并建立待校验插件和对应的校验策略之间的映射关系,进一步地,基于映射关系,为待校验插件配置包含相应校验策略的校验包路径,最后,在校验包路径内基于校验策略执行待校验插件中的待校验业务逻辑信息,并对待校验参数进行校验。本申请实施例通过将待校验业务逻辑信息写入待校验插件,为待校验插件设置自定义校验策略进行校验,可以无代码侵入的实现复杂的业务逻辑校验。

如图2所示,为本申请实施例200示出的一种数据校验的方法中数据交互的示意图。其中,通过自定义注解方式,在需要校验的待校验业务逻辑信息的待校验参数上标记注解,设置用户选择的校验策略。用户开发包含待校验业务逻辑信息的待校验业务插件,校验系统自动将用户开发的待校验业务插件插入到校验链中,同时也自动映射校验策略并注册到策略池。其中,不同的待校验业务插件会注册生成不同的校验策略(策略1、策略2、策略3、...略n)。基础校验器会识别获取的待校验业务插件,并将待校验业务插件传递给反射器,反射器使用asm字节流技术执行反射,将待校验业务插件反射成待校验业务插件类。反射过程中针对待校验业务插件类使用缓存,以便相同待校验业务插件不会反复进行反射,直接读取缓存获取即可。进一步地,校验系统识别配置中心的校验包路径,传递给执行器,执行器在需要校验的校验包路径内,根据用户选择的校验策略来执行校验链。

如图3所示,为本申请实施例300示出的一种数据校验的方法的具体流程的示意图。其中,具体流程如下所示:

S301,获取用户自定义的待校验插件。

这里,用户通过自定义注解的方式将与待校验业务逻辑信息对应的校验策略标记在待校验插件中。其中,待校验逻辑信息和校验策略均有用户自行设置。例如在业务场景中:需求是当参数中的属性1等于A业务值的前提下,对属性2和属性3进行业务值比较,如果不相等则校验不通过。其中的待校验业务逻辑信息为整个业务场景,而校验策略为属性2和属性3进行业务值是否相等。

S302,注册自定义注解中的校验策略。

这里,为便于校验系统识别,如图2所示,将自定义注解中的校验策略自动映射至策略池并注册。不同的待校验插件对应注册不同的校验策略(校验策略1、校验策略2、校验策略3、...校验策略n)。同时,将用户开发的待校验插件插入到校验链等待校验。

S303,为注册后的校验策略和对应的待校验插件建立映射关系。

S304,识别待校验插件。

这里,如图2所示,校验系统中的基础校验器识别待校验插件。

S305,在缓存中查询是否存在与该待校验插件对应的待校验插件类。

这里,读取缓存,在缓存中查询与识别到的待校验插件对应的待校验插件类,并在查询到待校验插件类时直接调用该待校验插件类。若为相同的待校验插件,则不在需要反射生成对应的待校验插件类,提升处理效率。

S306,生成与该待校验插件对应的待校验插件类并缓存。

这里,基于JAVA类反射机制将待校验插件反射成待校验插件类,并缓存待校验插件类。具体地,Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。Java源文件经过javac编译器编译之后,将会生成对应的二进制文件。每个合法的Java类文件都具备精确的定义,而正是这种精确的定义,才使得Java虚拟机得以正确读取和解释所有的Java类文件。进一步地,反射器使用ASM字节流技术执行反射反射,将待校验插件反射成待校验插件类。其中,ASM(assembly)是一个Java字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。Java class被存储在严格格式定义的.class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及Java字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

S307,调用待校验插件类。

S308,为待校验插件配置校验包路径。

这里,基于映射关系,如图2所示,校验系统的配置中心为待校验插件配置包含相应校验策略的校验包路径。

S309,在校验包路径内基于校验策略执行待校验插件中的待校验业务逻辑信息。

这里,在校验包路径内基于校验策略执行待校验插件中的待校验业务逻辑信息,并对待校验参数进行校验。具体地,校验系统中的执行器在需要校验的校验包路径内,根据用户选择的校验策略来执行校验链。

本申请基于上述步骤实现上述一种数据校验的方法。通过自定义注解方式,在需要校验的待校验参数上标记注解,同时定制需要校验的待校验插件,校验系统在校验过程中就会依照自定义的待校验业务逻辑信息来校验,无需手动在业务方法中来实现复杂的参数业务判断,将参数校验环节前置到执行业务前校验,同时支持动态随时增加业务校验,可扩展。

现有的参数校验框架都是针对某个属性进行基本的数据完整性以及数据正确性校验,而真正的业务系统中,除了这些基础的校验,一定包含复杂的业务逻辑校验,这些校验内也一定包括对参数的各个场景校验。针对这些问题,本申请实施例中的数据校验方法中的待校验业务逻辑信息是根据用户自己选择的校验策略(可多选)来执行的,提供了用户可自定义的业务逻辑信息校验,也可自定义执行校验额策略,且参数校验前置到业务方法前执行,第一时间保证数据完整性。同时可以与其他任何校验框架共同使用。

基于同一发明构思,本申请实施例400还提供一种数据校验的装置,其中,如图4所示,该装置包括:

获取模块41,用于获取待校验插件,其中,所待校验插件中包括待校验业务逻辑信息,待校验业务逻辑信息中的待校验参数标记有包含与待校验业务逻辑信息对应的校验策略的自定义注解;

注册模块42,用于注册自定义注解中的校验策略,并建立待校验插件和对应的校验策略之间的映射关系;

配置模块43,用于基于映射关系,为待校验插件配置包含相应校验策略的校验包路径;

校验模块44,用于在校验包路径内基于校验策略执行所述待校验插件中的待校验业务逻辑信息,并对待校验参数进行校验。

本实施例中,获取模块41、注册模块42、配置模块43和校验模块44的具体功能和交互方式,可参见图1对应的实施例的记载,在此不再赘述。

可选地,该装置进一步包括:

识别模块45,用于识别待校验插件;

反射模块46,用于基于JAVA类反射机制将待校验插件反射成待校验插件类,并缓存待校验插件类。

可选地,该装置进一步包括:

查询模块47,用于读取缓存,在缓存中查询与识别到的待校验插件对应的待校验插件类,并在查询到待校验插件类时直接调用该待校验插件类。

可选地,配置模块43进一步用于:

基于映射关系,为待校验插件类选取相应的校验策略,并确定与将待校验插件类相关的校验包路径。

如图5所示,本申请的又一实施例500还提供一种终端设备,包括处理器501,其中,处理器501用于执行上述一种数据校验的方法的步骤。从图5中还可以看出,上述实施例提供的终端设备还包括非瞬时计算机可读存储介质502,该非瞬时计算机可读存储介质502上存储有计算机程序,该计算机程序被处理器501运行时执行上述一种数据校验的方法的步骤。实际应用中,该终端设备可以是一台或多台计算机,只要包括上述计算机可读介质和处理器即可。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘和FLASH等,该存储介质上的计算机程序被运行时,能够执行上述的一种数据校验的方法中的各个步骤。实际应用中,所述的计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,能够执行上述的一种数据校验的方法中的各个步骤。

根据本申请公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本申请保护的范围。在本申请公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标注的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。

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

技术分类

06120113807610