交易数据处理方法、装置和电子设备
文献发布时间:2024-01-17 01:26:37
技术领域
本说明书属于计算机技术领域,尤其涉及交易数据处理方法、装置和电子设备。
背景技术
在金融领域,对于同一业务场景下的不同交易类型的交易数据处理请求,往往需要采用不同的数据处理模式来进行针对性的处理。
基于现有方法,具体实施前,需要技术人员预先编写好相关的if/else或Switch等分支判断判断代码语句。相应的,具体实施时,需要执行上述分支判断语句先进行分支判断,再根据分支判断结果选择对应的处理模式,然后基于该处理模式进行具体的交易数据处理。
基于上述方法,实施过程相对较为繁琐、复杂。并且,通用性和可扩展性相对较差,例如,当需要对接口新增交易类型时,势必要了解之前代码语句的设计逻辑,再重新改写原来的包括if/else或Switch等分支判断判断代码语句,导致技术人员的工作量相对较大。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书提供了一种交易数据处理方法、装置和电子设备,通过有效地利用预设的应用程序框架自身的特性,能够在不需要外部依赖的前提下,采用动态注入的方式,利用同一个接口高效地自动完成针对不同交易类型的交易数据处理。
本说明书提供了一种交易数据处理方法,包括:
接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;
采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;
将所述目标入参发送至目标工厂Bean对象;
通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;
利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
在一个实施例中,所述预设的应用程序框架包括:spring框架;相应的,所述工厂Bean对象包括:基于spring框架的FactoryBean对象。
在一个实施例中,利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,包括:
利用方法拦截器根据目标入参,从目标接口类的实现类中确定出与目标入参相匹配的目标实现类;
根据应用前后关系,获取目标实现类;
基于预设的应用程序框架,通过反射执行目标实现类。
在一个实施例中,所述目标接口类的实现类包括多个实现类;其中,每一个实现类对应至少一个交易类型。
在一个实施例中,利用方法拦截器根据目标入参,从目标接口类的实现类中确定出与目标入参相匹配的目标实现类,包括:
利用方法拦截器检索目标接口类的实现类的名称字段;将名称字段中存在与目标入参相匹配的字段的实现类,确定为与目标入参相匹配的目标实现类。
在一个实施例中,所述方法还包括:
利用方法拦截器检索目标接口类的实现类的注释数据;将注释数据中存在与目标入参相匹配的字段的实现类,确定为与目标入参相匹配的目标实现类。
在一个实施例中,在接收指向目标应用程序的目标接口的目标交易数据处理请求之前,所述方法还包括:
接收关于目标应用程序的动态注解请求;
响应动态注解请求,确定出目标应用程序中需要动态注入的目标接口;
根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类;其中,一个实现类至少对应一种交易类型的数据处理模式。
在一个实施例中,在根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类之后,所述方法还包括:
接收关于目标应用程序的目标接口的新增交易类型设置请求;
响应所述新增交易类型设置请求,根据特征字符,确定出目标接口的目标接口类;
根据新增交易模式设置请求和预设的处理规则,在所述目标接口类的实现类中增加定义与新增交易类型对应的实现类。
在一个实施例中,在根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类之后,所述方法还包括:
接收并响应初始化指令,扫描目标应用程序当前运行环境类路径下的接口类,得到接口类扫描结果;
根据接口类扫描结果,确定需要动态注入的目标接口的目标接口类;
生成至少一个方法拦截器;
创建与目标接口类对应的工厂Bean对象;获取并将方法拦截器设置于该工厂Bean对象中。
在一个实施例中,扫描目标应用程序当前运行环境类路径下的接口类,包括:
利用Spring框架的类路径扫描功能模块,基于相应的筛选规则,扫描目标应用程序当前运行环境类路径下的接口类。
在一个实施例中,在利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理之后,所述方法还包括:
获取对应的目标出参,作为目标交易数据处理结果;
将目标交易数据处理结果发送至目标应用程序中的下一个接口。
本说明书还提供了一种交易数据处理装置,包括:
接收模块,用于接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;
采集模块,用于采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;
发送模块,用于将所述目标入参发送至目标工厂Bean对象;
提供模块,用于通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;
执行模块,用于利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
本说明书还提供了一种电子设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现所述交易数据处理方法的相关步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时实现以下步骤:接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;将所述目标入参发送至目标工厂Bean对象;通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
本说明书还提供了一种计算机程序产品,包含有计算机程序,所述计算机程序被处理器执行时实现所述交易数据处理方法的相关步骤。
基于本说明书提供的交易数据处理方法、装置和电子设备,在接收到目标交易数据处理请求后,可以先采集目标交易数据处理请求中的交易类型标识作为目标入参;并确定出与目标接口的目标接口类对应的目标工厂Bean对象;将目标入参发送至目标工厂Bean对象;并通过目标工厂Bean对象将目标入参提供给相应的方法拦截器;再利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。从而可以通过有效地利用预设的应用程序框架自身的框架特性,在不需要外部依赖的前提下,在程序运行过程能够采用动态注入的方式,利用同一个接口高效地自动完成针对不同交易类型的交易数据处理,提高整体的交易数据处理效率;同时,也使得用于相关的代码语句变得更加简洁,具有更好的通用性和可扩展性。进一步,基于上述方法,当需要对接口新增交易类型时,只需要在原代码语句中增加定义接口类中与新增交易类型对应的实现类即可,不需要了解原代码语句的处理逻辑,也不需要再另外调整、修改其他已有的代码语句,从而能够有效地减少技术人员的相关工作量,降低技术人员的操作门槛,更好地满足多样化的场景需求。
附图说明
为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书的一个实施例提供的交易数据处理方法的流程示意图;
图2是在一个场景示例中,应用本说明书实施例提供的交易数据处理方法的一种实施例的示意图;
图3是在一个场景示例中,应用本说明书实施例提供的交易数据处理方法的一种实施例的示意图;
图4是在一个场景示例中,应用本说明书实施例提供的交易数据处理方法的一种实施例的示意图;
图5是在一个场景示例中,应用本说明书实施例提供的交易数据处理方法的一种实施例的示意图;
图6是在一个场景示例中,应用本说明书实施例提供的交易数据处理方法的一种实施例的示意图;
图7是本说明书的一个实施例提供的服务器的结构组成示意图;
图8是本说明书的一个实施例提供的交易数据处理装置的结构组成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
参阅图1所示,本说明书实施例提供了一种交易数据处理方法。具体实施时,该方法可以包括以下内容:
S101:接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;
S102:采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;
S103:将所述目标入参发送至目标工厂Bean对象;
S104:通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;
S105:利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
其中,上述接口类具体可以理解为基于相应的程序语言(例如,JAVA语言等)针对应用中接口的抽象方法的申明,通常可以包括诸如方法名、入参、返回值等数据。上述实现类具体可以理解为针对接口类的抽象方法具体的处理和实现的规则逻辑。
基于上述实施例,在接收到目标交易数据处理请求之后,通过充分利用预设的应用程序框架自身的特性,能够在不需要外部依赖的前提下,采用动态注入的方式,使目标接口的目标工厂Bean对象中的方法拦截器自动确定并执行相匹配的目标实现类,从而能够利用同一个接口高效地完成针对不同交易类型的交易数据处理,提高整体的交易数据处理效率。
其中,上述目标交易数据处理请求具体可以是目标应用程序启动并运行时所接收到的交易数据处理请求。所述交易类型标识用于指示目标交易数据处理请求所涉及的交易类型。
在一些实施例中,上述目标应用程序具体可以是基于预设的应用程序框架编写和运行的应用程序。具体的,上述目标应用程序可以是金融交易类型应用程序,例如,XX银行的客户端应用程序,或者YY理财应用程序等等。当然,需要说明的是,上述所列举的目标应用程序只是一种示意性说明。具体的实施时,根据具体的应用场景和处理需求,上述目标应用程序还可以包括其他类型的应用程序,例如,导航类应用程序、购物类应用程序等。对此,本说明书不作限定。
在目标应用程序包括金融交易类应用程序(例如,XX银行的客户端应用程序)的情况下,参阅图2所示,用户可以通过终端设备上安装的目标应用程序向对应的系统服务器发起不同业务场景的交易数据处理请求,例如,借贷申请请求、转账处理请求、账户查询请求等。
其中,对于每一种业务场景的交易数据处理请求,具体又可以细分为多种不同类型的交易数据处理请求。例如,借贷申请请求具体可以包括:涉及贸易融资类的借贷申请请求、涉及流动资金类的借贷申请请求等。由于不同类型的交易数据处理请求所涉及的服务内容会存在差异,相应的,针对不同类型的交易数据处理请求的数据处理模式也是不同的。
系统服务器在接收到用户发起的目标交易数据处理请求后,可以先确定出该目标交易数据处理请求对应的目标业务场景;再将该目标交易数据处理请求分发到与该目标业务场景对应的目标接口以进行具体的处理。
目标接口在接收到目标交易数据处理请求之后,基于预设的应用程序框架,可以根据相应的代码语句,通过目标接口类的目标工厂Bean对象的方法拦截器获取目标交易数据处理请求中的交易类型标识作为目标入参,并根据该目标入参在目标接口类的实现类中找到相匹配的目标实现类,进行动态注入;再通过反射执行该目标实现类,以上进行基于对应的数据处理模式下的目标交易数据处理,得到相应的目标交易数据处理结果,作为目标出参;接着,系统服务器可以将该目标出参作为目标交易数据处理结果反馈给用户的终端设备;或者,基于相应的处理逻辑,发送给下一个接口,以进行进一步处理。
具体的,例如,参阅图2所示,用户通过终端设备发起的为涉及贸易融资类的借贷申请请求。系统服务器在接收到上述借贷申请请求后,可以将该借贷申请请求分发给负责借贷申请业务的目标接口,例如,LoanApplyInterface。与目标接口的目标接口类的目标工厂Bean对象(例如,FactoryBean)可以将涉及贸易融资类的借贷申请请求中用于指示贸易融资类的交易类型标识提取出来作为目标入参,并提供给相应的方法拦截器(例如,MethodInterceptor)。进而方法拦截器可以根据目标入参,检索目标接口类的实现类,以确定出与贸易融资类匹配的目标实现类;再通过反射执行上述目标实现类,对该用户进行贸易融资类的申请条件核验,以响应涉及贸易融资类的借贷申请请求,完成相应的目标交易数据处理,并得到对应的申请条件核验结果;再将该申请条件核验结果发送至终端设备;终端设备将申请条件核验结果展示该用户。
在本实施例中,所述系统服务器具体可以包括一种应用于金融交易服务平台一侧,能够实现数据传输、数据处理等功能的后台服务器。具体的,所述系统服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,所述系统服务器也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述系统服务器所包含的服务器的数量。所述系统服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
在本实施例中,所述终端设备具体可以包括一种应用于用户一侧,能够实现数据采集、数据传输等功能的前端。具体的,所述终端设备例如可以为台式电脑、平板电脑、笔记本电脑、智能手机等电子设备。或者,所述终端设备也可以为能够运行于上述电子设备中的软件应用。例如,可以是在智能手机上运行的金融交易APP等。
在一些实施例中,上述目标交易数据处理请求具体还可以携带有业务场景标识。相应的,可以根据业务场景标识,确定出负责该业务场景的交易数据处理的目标接口;进而可以确定出与该目标接口对应的目标接口类。
在一些实施例中,具体实施时,上述预设的应用程序框架可以包括:spring框架。其中,上述spring框架(Spring Framework)具体可以是指一个开源的J2EE应用程序框架,是一种能够针对Spring Bean的生命周期进行管理的轻量级容器。
具体的,本实施例中所使用的spring框架具体可以是Spring 5,或者版本低于Spring 5的其他版本的spring框架。
其中,上述Spring Bean(或称Spring Bean、Bean对象,或者简称Bean、对象)具体可以是一种Spring框架在运行时管理的对象,Spring框架负责该Bean对象的创建、依赖注入、切面编程、销毁等管理。其中,Spring框架中管理Bean对象的区域可以称为Spring IOC容器。
其中,IOC(Inversion of Control,控制反转)具体可以是一种面向对象编程的设计原则,可以用来降低计算机代码之间的耦合度。其中,最常见的方式叫依赖注入(Dependency Injection,简称DI),还有一种方式叫依赖查找(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它,也可以说依赖被注入到对象中。其中,上述依赖注入(DependencyInjection)具体可以是指一种消除类之间依赖关系的设计模式,是Spring框架的核心概念之一,控制反转的一种实现方式。
在所述预设的应用程序框架包括:spring框架的情况下;相应的,所述工厂Bean对象具体可以包括:基于spring框架的FactoryBean对象。
其中,上述基于spring框架的FactoryBean对象也可以称为Spring工厂Bean(FactoryBean)(可以简称为工厂Bean)。通常Spring IOC容器中可以有两种Bean:普通Bean和工厂Bean。具体的,普通Bean可以由Spring IOC容器直接管理;工厂Bean具体可以是通过编程的方式生成所需的Bean对象。
基于现有方法,利用spring框架往往只能实现静态注入,即,只能在编写代码程序时通过配置的方式提前指定要注入的接口依赖(例如,实现类);一旦基于Spring框架的应用启动后,在应用运行的过程中,对于接口的依赖将无法再进行动态修改,进而导致无法在应用运行的过程中灵活地变更接口的实现类。
而基于本说明提供的方法,则可以充分利用spring框架的自身特性,通过组合使用基于spring框架的FactoryBean对象和方法拦截器,能够在应用的运行过程中实现对接口依赖的动态注入,即,可以在应用运行的过程中灵活、动态地变更接口的实现类。
基于上述实施例,通过充分利用spring框架的自身特性,在不需要引入外部依赖的情况下,利用FactoryBean对象的方法拦截器进行动态注入,从而可以在应用运行过程中灵活地变更接口的实现类,以便能够利用同一个接口高效地完成针对不同交易类型的交易数据处理。
在一些实施例中,基于Spring框架,目标应用程序运行时,对于之前确定的目标接口类已经创建了相应的目标工厂Bean对象,因此Spring框架可以直接将所创建的目标工厂Bean对象自动注入到目标接口类中,以便后续能够在运行过程中在需要时自动实现动态注入。
在一些实施例中,参阅图3所示,上述利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,具体实施时,可以包括以下内容:
S1:利用方法拦截器根据目标入参,从目标接口类的实现类中确定出与目标入参相匹配的目标实现类;
S2:根据应用前后关系(例如,applicationContext),获取目标实现类;
S3:基于预设的应用程序框架,通过反射执行目标实现类。
基于上述实施例,可以充分利用预设的应用程序框架的自身特性,通过使用方法拦截器在应用运行过程中,确定出相匹配的目标实现类;并动态地将目标接口的依赖更改为目标实现类,以便通过执行目标实现类,实现与目标交易数据处理请求相匹配的目标交易数据处理。
在一些实施例中,所述目标接口类的实现类具体可以包括多个实现类;其中,每一个实现类对应至少一个交易类型。每一个实现类包含有至少对应一种交易类型的数据处理模式。
具体的,每一个实现类包含有所对应的交易类型的数据处理模式的具体执行实例,可以通过执行该实现类实现相对应的数据处理模式的交易数据处理。
具体实施前,可以根据预设的处理规则,编写并定义目标接口的目标接口类,以及目标接口类具体的实现类等信息。具体处理过程后续将另做说明。
基于上述实施例,可以预先针对目标接口的目标接口类布设对应多个交易类型的多个实现类,以便后续在运行过程中,能够根据具体情况,灵活地更换目标接口的实现类。
在一些实施例中,上述利用方法拦截器根据目标入参,从目标接口类的实现类中确定出与目标入参相匹配的目标实现类,具体实施时,可以包括:
利用方法拦截器检索目标接口类的实现类的名称字段;将名称字段中存在与目标入参相匹配的字段的实现类,确定为与目标入参相匹配的目标实现类。
具体实施前,根据预设的处理规则,在对目标接口类的实现类进行定义时,可以使用能够表征实现类的类型的字段进行命名。相应的,方法拦截器可以通过检索实现类的名称中是否包含有与目标入参相同或相近的字段,来找出相匹配的实现类。
基于上述实施例,方法拦截器可以根据实现类的名称中的字段,快速地找出相匹配的目标实现类。
在一些实施例中,所述方法具体实施时,还可以包括以下内容:利用方法拦截器检索目标接口类的实现类的注释数据;将注释数据中存在与目标入参相匹配的字段的实现类,确定为与目标入参相匹配的目标实现类。
具体实施前,根据预设的处理规则,在对目标接口类的实现类进行定义时,可以使用能够描述实现类的类型的字符对实现类进行注释,得到实现类的注释数据。相应的,方法拦截器还可以通过检索注释数据中是否存在与目标入参相关的字符,来找出相匹配的实现类。
基于上述实施例,方法拦截器可以根据实现类的注释数据中的字符,快速地找出相匹配的目标实现类。
在一些实施例中,参阅图4所示,在接收指向目标应用程序的目标接口的目标交易数据处理请求之前,所述方法具体实施时,还可以包括以下内容:
S1:接收关于目标应用程序的动态注解请求;
S2:响应动态注解请求,确定出目标应用程序中需要动态注入的目标接口;
S3:根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类;其中,一个实现类至少对应一种交易类型的数据处理模式。
其中,上述预设的处理规则具体可以理解为基于预设的应用程序框架,能支持程序运行时动态注入的代码语句的编写规则。
基于上述实施例,具体实施前,可以根据预设的处理规则来编写目标应用程序的相关代码语句,以完成针对运行过程中需要动态注入的目标接口的动态注解。基于上述编写方式,可以使得目标应用程序的相关代码语句相对更加的简洁,具有更好的通用性和可扩展性。
在一些实施例中,具体实施时,可以根据关于目标应用程序的动态注解请求,自定义注解运行过程中需要动态注入的目标接口;进一步还可以自定义目标接口的接口类,以及该接口类可能会涉及的一个或多个具体的实现类。
具体注解时,可以使用字符“CustomInterface”作为指定的特征字符来注解运行过程中需要动态注入的目标接口。进一步,在注解目标接口的同时,还可以注解保留到运行时,以便上述注解在程序运行时生效。具体的,可以使用代码语句public@interfaceCustomInterface注解接口;可以使用代码语句@Target({ElementType.TYPE})对接口的方法类型进行注解;还可以使用代码语句@Retention(RetentionPolicy.RUNTIME)注解保留到程序运行时(在运行时生效)。
在一些实施例中,在根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类之后,参阅图5所示,所述方法具体实施时,还可以包括以下内容:
S1:接收关于目标应用程序的目标接口的新增交易类型设置请求;
S2:响应所述新增交易类型设置请求,根据特征字符,确定出目标接口的目标接口类;
S3:根据新增交易模式设置请求和预设的处理规则,在所述目标接口类的实现类中增加定义与新增交易类型对应的实现类。
其中,所述新增交易类型设置请求至少可以携带有新增交易类型的交易类型标识。
相应的,可以根据上述新增交易类型,在原有的目标应用程序的相关代码语句中,在不用修改、调整已有的代码语句的前提下,可以直接在目标接口的目标接口类的实现类中新增与新增交易类型对应的实现类。
基于上述实施例,可以有效地简化技术人员的操作门槛,技术人员不需要了解原有的代码语句逻辑,也不需要另外修改已有的代码语句,只需要直接在目标接口类的实现类中增加一个交新增交易类型对应的实现类的定义和注解即可,有效减少了技术人员的工作量,也使得目标应用程序具有更好的扩展性。
在一些实施例中,上述新增交易类型设置请求还可以携带有与新增交易类型对应的处理模式的处理规则。相应的,具体实施时,还可以根据上述与新增交易类型对应的处理模式的处理规则,生成对应的可直接运行的执行实例,以得到对应的实现类。
在一些实施例中,所述方法具体实施时,还可以接收关于目标应用程序的目标接口的交易类型删除请求。类似的,技术人员不需要了解原有的代码语句逻辑,也不需要另外修改已有的代码语句,只需要直接从目标接口类的实现类中伤处相对应的实现类的定义和注解即可,从而使得对目标接口的维护和更改更加灵活、便捷。
在一些实施例中,参阅图6所示,在根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类之后,所述方法具体实施时,还可以包括以下内容:
S1:接收并响应初始化指令,扫描目标应用程序当前运行环境类路径下的接口类,得到接口类扫描结果;
S2:根据接口类扫描结果,确定需要动态注入的目标接口的目标接口类;
S3:生成至少一个方法拦截器;
S4:创建与目标接口类对应的工厂Bean对象;获取并将方法拦截器设置于该工厂Bean对象中。
基于上述实施例,可以先根据与目标应用程序相关的代码语句进行初始化操作,做好前期准备,以便后续运行过程中能够利用预设的应用程序框架的自身特性,顺利地实现针对目标接口的动态注入。
其中,上述初始化指令具体可以是目标应用程序启动时生成的指令。
在一些实施例中,上述扫描目标应用程序当前运行环境类路径下的接口类,具体可以包括:利用Spring框架的类路径扫描功能模块,基于相应的筛选规则,扫描目标应用程序当前运行环境类路径下的接口类。
具体实施时,可以通过利用Spring框架的类路径扫描功能模块,扫描与目标应用程序相关的整个项目中的所有Java类,基于相应的筛选规则,通过判断Java类上是否有“CustomInterface”注解,来筛选出需要动态注入的目标接口的目标接口类,得到对应的接口类扫描结果
基于上述实施例,可以充分利用Spring框架的特性,快速、便捷地完成接口类扫描,以便能够准确地确定出需要进行动态注入的目标接口。
在一些实施例中,具体实施时,可以通过基于Spring框架自身的特性,调用Spring框架自带的ClassPathScanningCandidateComponentProvider类作为类路径扫描功能模块,来自动完成当前运行环境类路径下的接口类扫描。
具体的,基于上述Spring框架的ClassPathScanningCandidateComponentProvider类(例如,org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider)可以通过重载它的isCandidateComponent(例如,AnnotatedBeanDefinition beanDefinition)和protected booleanisCandidateComponent(例如,MetadataReader metadataReader)两个方法,实现对需要动态注入的目标接口的接口类扫描。具体的,可以采用以下代码语句通过重载类扫描的过滤、识别规则来实现关于接口类的处理public class CustomInterfaceScanner extends ClassPathScanningCandidateComponentProvider{public CustomInterfaceScanner(boolean useDefaultFilters){super(useDefaultFilters);}。其中,useDefaultFiltlers表示类扫描的过滤是否使用Spring框架内的过滤规则,通常Spring框架内置的缺省的过滤规则是针对所有SpringBean。进一步,还可以采用以下代码语句传入指定的类包路径,执行接口类包路径扫描CustomInterfaceScanner provider=newCustomInterfaceScanner(false)。
在一些实施例中,具体实施时,可以基于Spring框架,通过实现MethodInterceptor(例如,org.springframework.cglib.proxy.MethodInterceptor)的方式来生成一个方法拦截器,即,通过实现public Object intercept(例如,Object o,Method method,Object[]objects,MethodProxy methodProxy)方法来生成一个方法拦截器,并对该方法拦截器进行相应的设置,以便后续基于该方法拦截器能够在intercept方法中通过Spring容器获取对应的接口实现类,以通过反射的方式调用并执行接口实现类。基于设置后的方法拦截器,具体运行时,能够根据方法入参objects查询对应的接口实现类;再通过applicationContext获取对应的接口实现类Bean;最后通过反射执行实现类Bean。
在一些实施例中,具体实施时,可以为需要动态注入的目标接口的目标接口类生成一个的代理类,并将该方法拦截器指定给该代理类。具体的,可以采用以下代码语句public class CommonFactoryBean implements FactoryBean确定需要动态注入的接口类;并采用以下代码语句private Class customInterfaceClass确定相应的方法拦截器。
具体的,基于Spring框架,可以通过为需要动态注入的目标接口的目标接口类生成一个相对应的工厂Bean对象(例如,FactoryBean),作为注入带方法拦截器的代理类。具体实施时,可以先通过相应的代码语句扫描确定需要动态注入的目标接口的接口类,例如,public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistrybeanDefinitionRegistry)throws BeansException;再通过相关的代码语句(例如,Set
此外,还可以通过相应的代码语句设置CommonFactoryBean的依赖注入的优先级。例如,通过applicationContext.getBean("customInterfaceMethodInterceptor"));String beanName=interfaceClass.getName()可以将该接口类的依赖注入的优先级设置为最高优先级。
在完成上述编写,以及初始化操作后,从而可以使得基于预设的应用程序框架的目标应用程序在运行过程中,使得目标接口能够采用动态注入的方式灵活地调整并执行相匹配的目标实现类,以实现针对多种不同交易类型的交易数据处理。从而可以针对基于Spring框架的接口通过进行依赖的动态注入,基于Spring框架的特性实现接口多种内部类的实现,无需其他外部依赖,通用性强;并且,借助启动时的接口类扫描、动态代理和方法拦截器可以运行过程中通过接收并根据目标入参来动态调用所需要的实现类的接口方法,有较高的灵活度。
在一些实施例中,在利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理之后,所述方法具体实施时,还可以包括以下内容:
S1:获取对应的目标出参,作为目标交易数据处理结果;
S2:将目标交易数据处理结果发送至目标应用程序中的下一个接口。
基于上述实施例,可以在目标接口完成所负责的目标交易数据处理后,自动且及时地将目标交易数据处理结果分发到下一个接口进行进一步的交易数据处理,以最终完成该业务场景下完整的交易数据处理。
在一些实施例中,在获取对应的目标出参,作为目标交易数据处理结果之后,根据具体的业务场景需求,还可以直接将该目标交易数据处理结果反馈给用户所持有的终端设备。
由上可见,基于本说明书实施例提供的交易数据处理方法,在接收到目标交易数据处理请求后,先采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;将目标入参发送至目标工厂Bean对象;并通过目标工厂Bean对象将目标入参提供给相应的方法拦截器;再利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。从而可以通过有效地利用预设的应用程序框架自身的特性,能够在不需要外部依赖的前提下,采用动态注入的方式,利用同一个接口高效地完成针对不同交易类型的交易数据处理,提高整体的交易数据处理效率;同时,也使得用于相关的代码语句更加的简洁,具有更好的通用性和可扩展性。进一步,基于上述方法,当需要对接口新增交易类型时,只需要在原代码语句中增加定义接口类中与新增交易类型对应的实现类即可,不需要另外调整其他已有的代码语句,从而能够有效地减少技术人员的工作量,降低技术人员的操作门槛。
参阅图7所示,本说明书实施例还提供了一种具体的电子设备,其中,所述电子设备包括网络通信端口701、处理器702以及存储器703,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口701,具体可以用于接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识。
所述处理器702,具体可以用于采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;将所述目标入参发送至目标工厂Bean对象;通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
所述存储器703,具体可以用于存储相应的指令程序。
在本实施例中,所述网络通信端口701可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器702可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器703可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述交易数据处理方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;将所述目标入参发送至目标工厂Bean对象;通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本说明书还提供了一种计算机程序产品,包含有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;将所述目标入参发送至目标工厂Bean对象;通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
参阅图8所示,在软件层面上,本说明书实施例还提供了一种交易数据处理装置,该装置具体可以包括以下的结构模块:
接收模块801,具体可以用于接收指向目标应用程序的目标接口的目标交易数据处理请求;其中,所述目标交易数据处理请求至少携带有交易类型标识;
采集模块802,具体可以用于采集目标交易数据处理请求中的交易类型标识作为目标入参;确定与目标接口的目标接口类对应的目标工厂Bean对象;
发送模块803,具体可以用于将所述目标入参发送至目标工厂Bean对象;
提供模块804,具体可以用于通过目标工厂Bean对象将所述目标入参提供给相应的方法拦截器;
执行模块805,具体可以用于利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理。
在一些实施例中,所述预设的应用程序框架具体可以包括:spring框架;相应的,所述工厂Bean对象可以包括:基于spring框架的FactoryBean对象。
在一些实施例中,上述执行模块805具体实施时,可以按照以下方式利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类:利用方法拦截器根据目标入参,从目标接口类的实现类中确定出与目标入参相匹配的目标实现类;根据应用前后关系,获取目标实现类;基于预设的应用程序框架,通过反射执行目标实现类。
在一些实施例中,所述目标接口类的实现类具体可以包括多个实现类;其中,每一个实现类对应至少一个交易类型。
在一些实施例中,上述执行模块805具体实施时,可以按照以下方式利用方法拦截器根据目标入参,从目标接口类的实现类中确定出与目标入参相匹配的目标实现类:利用方法拦截器检索目标接口类的实现类的名称字段;将名称字段中存在与目标入参相匹配的字段的实现类,确定为与目标入参相匹配的目标实现类。
在一些实施例中,上述执行模块805具体实施时,还可以利用方法拦截器检索目标接口类的实现类的注释数据;将注释数据中存在与目标入参相匹配的字段的实现类,确定为与目标入参相匹配的目标实现类。
在一些实施例中,在接收指向目标应用程序的目标接口的目标交易数据处理请求之前,所述装置具体实施时,还可以用于接收关于目标应用程序的动态注解请求;响应动态注解请求,确定出目标应用程序中需要动态注入的目标接口;根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类;其中,一个实现类至少对应一种交易类型的数据处理模式。
在一些实施例中,在根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类之后,所述装置具体实施时,还可以用于接收关于目标应用程序的目标接口的新增交易类型设置请求;响应所述新增交易类型设置请求,根据特征字符,确定出目标接口的目标接口类;根据新增交易模式设置请求和预设的处理规则,在所述目标接口类的实现类中增加定义与新增交易类型对应的实现类。
在一些实施例中,在根据预设的处理规则,使用指定的特征字符注解目标接口;并自定义与目标接口对应的目标接口类,以及目标接口类的实现类之后,所述装置具体实施时,还可以用于接收并响应初始化指令,扫描目标应用程序当前运行环境类路径下的接口类,得到接口类扫描结果;根据接口类扫描结果,确定需要动态注入的目标接口的目标接口类;生成至少一个方法拦截器;创建与目标接口类对应的工厂Bean对象;获取并将方法拦截器设置于该工厂Bean对象中。
在一些实施例中,所述装置具体实施时,可以按照以下方式扫描目标应用程序当前运行环境类路径下的接口类:利用Spring框架的类路径扫描功能模块,基于相应的筛选规则,扫描目标应用程序当前运行环境类路径下的接口类。
在一些实施例中,在利用方法拦截器根据目标入参,基于预设的应用程序框架,采用动态注入的方式执行与目标入参相匹配的目标实现类,以实现针对目标交易数据处理请求的目标交易数据处理之后,所述装置具体实施时,还可以用于获取对应的目标出参,作为目标交易数据处理结果;将目标交易数据处理结果发送至目标应用程序中的下一个接口。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,基于本说明书实施例提供的交易数据处理装置,能够在不需要外部依赖的前提下,采用动态注入的方式,利用同一个接口高效地完成针对不同交易类型的交易数据处理,提高整体的交易数据处理效率;同时,也使得用于相关的代码语句更加的简洁,具有更好的通用性和可扩展性。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
- 基于区块链的交易共识处理方法及装置、电子设备
- 基于区块链的交易共识处理方法及装置、电子设备
- 一种交易处理方法、装置及电子设备
- 一种样本数据处理方法、样本数据处理装置及电子设备
- 数据处理方法、数据处理装置以及电子设备
- 数据处理方法、存储介质、电子设备及数据交易系统
- 数据处理方法、存储介质、电子设备及数据交易系统