本发明涉及金融业务,尤其涉及一种用于金融业务的循环依赖解除方法、装置及电子设备。
背景技术:
1、银行在开展金融业务时,为了用户方便快捷的使用,通常是采用线上系统提供各种各样的线上金融服务。现有技术中,银行的线上系统一般是采用微服务的软件架构方式。微服务是当前非常流行的软件架构,普遍应用于分布式系统的开发之中,微服务通过将一个完整的系统拆分为若干个粒度较小的服务单元,每个服务单元通过网络接口与其他服务单元相互调用,共同完成业务功能。微服务架构提倡把服务拆的小而独立,一个软件系统往往会有很多服务单元,大部分的金融业务需求是需要多个服务单元一起配合才能完成。
2、例如在使用spring项目的开发的系统中,各种依赖不可避免。其中bean是指在spring项目中java class以bean的形式管理和使用。假如服务a和服务b产生了循环依赖,当a和b任何一方需要发布新功能或者因为异常情况宕机时,都会影响到对方的功能,以至于两个服务必须协调出一致的生命周期操作。
3、现有技术中,解除循环依赖主要是通过人工检测,列出微服务系统一个服务周期内的所有服务,再对这些服务一一进行分析后,人工解除循环依赖,需要大量的人力,很容易出现漏检及漏解除循环依赖的情况。
4、因此,现有技术还有待于改进和发展。
技术实现思路
1、鉴于上述现有技术的不足,本发明提供了一种用于金融业务的循环依赖解除方法、装置及电子设备,旨在解决现有技术中解除循环依赖主要是通过人工检测,列出微服务系统一个服务周期内的所有服务,再对这些服务一一进行分析后,人工解除循环依赖,需要大量的人力,很容易出现漏检及漏解除循环依赖的情况的问题。
2、本发明的技术方案如下:
3、本发明第一实施例提供了一种用于金融业务的循环依赖解除方法,所述方法包括:
4、获取待检测项目的源码数据;
5、创建aop文件,基于所述aop文件对所述待检测项目的源码数据进行筛选,生成bean文件列表,遍历所述bean文件列表判断bean之间是否存在循环依赖;
6、若存在循环依赖,则将循环依赖检测结果发送至开发人员终端;
7、获取开发人员的代码修改指令,对所述循环依赖进行解除操作,所述代码修改指令用于解除循环依赖。
8、进一步地,所述获取待检测项目的源码数据,包括:
9、基于gitclone命令从源码仓库获取待检测项目的源码数据。
10、进一步地,所述创建aop文件,基于所述aop文件对所述待检测项目的源码数据进行筛选,生成bean文件列表,包括:
11、创建aop文件,所述aop文件用于实现对bean转换和bean注入的相关方法的切入;
12、获取被切面的方法名称,根据被切面的方法名称获取对应的bean名称;
13、基于所述bean名称获取存在依赖关系的目标依赖bean;
14、基于所述bean及对应的目标依赖bean组合成bean文件列表。
15、进一步地,所述获取被切面的方法的名称类型,根据被切面的方法的名称类型获取对应的bean名称,包括:
16、获取被切面的方法名称的类型;
17、若被切面的方法名称为第一类,则通过第一函数获取当前要转换的class名称,通过第二函数获取待转换的bean名称;
18、若被切面的方法名称为第二类,则通过第一函数获取当前的bean名称。
19、进一步地,所述基于所述bean名称获取存在依赖关系的目标依赖bean,包括:
20、基于依赖关系获取函数获取当前bean的依赖关系的目标依赖bean,获取判断依赖关系获取函数的返回结果;
21、若依赖关系获取函数的返回结果不为0,则将返回结果作为入参持续获取存在依赖关系的目标依赖bean,直至依赖关系获取函数的返回结果为0。
22、进一步地,所述遍历所述bean文件列表判断bean之间是否存在循环依赖,包括:
23、基于所述bean文件列表,构建有向图;
24、判断有向图中是否存在有向环;
25、若存在有向环,则判断存在循环依赖,并获取所有有向环,生成有向环列表;
26、基于所述有向环列表查找所有有向环的共同边;
27、若查找到共同边,则将所述共同边存储至共边表;
28、基于共边表中的节点关系,获取bean循环依赖的关键节点。
29、进一步地,所述判断有向图中是否存在有向环,包括:
30、在有向图中寻找一个入度为0的顶点,将所述顶点及所有出边从图中删除,将删除的顶点放入预设排序队列;
31、若图中所全为入度为1的点或者预设排序队列的节点个数小于有向图中的顶点数据,则判定存在有向环。
32、本发明的另一实施例提供了一种用于金融业务的循环依赖解除装置,装置包括:
33、源码数据获取模块,用于获取待检测项目的源码数据;
34、循环依赖检测模块,用于创建aop文件,基于所述aop文件对所述待检测项目的源码数据进行筛选,生成bean文件列表,遍历所述bean文件列表判断bean之间是否存在循环依赖;
35、检测结果发送模块,用于若存在循环依赖,则将循环依赖检测结果发送至开发人员终端;
36、循环依赖解除模块,用于获取开发人员的代码修改指令,对循环依赖进行解除操作,所述代码修改指令用于解除循环依赖。
37、本发明的另一实施例提供了一种电子设备,所述电子设备包括至少一个处理器;以及,
38、与所述至少一个处理器通信连接的存储器;其中,
39、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的用于金融业务的循环依赖解除方法。
40、本发明的另一实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的用于金融业务的循环依赖解除方法。
41、有益效果:本发明实施例的用于金融业务的循环依赖解除方法,可实现快速识别出项目中真正被引用的bean中存在的循环依赖问题,排除掉项目中一些没有被引用的代码,且被排除的这些代码可能存在循环依赖;使得开发人员能够快速定位循环依赖,提升循环依赖解除效率。
1.一种用于金融业务的循环依赖解除方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取待检测项目的源码数据,包括:
3.根据权利要求2所述的方法,其特征在于,所述创建aop文件,基于所述aop文件对所述待检测项目的源码数据进行筛选,生成bean文件列表,包括:
4.根据权利要求3所述的方法,其特征在于,所述获取被切面的方法的名称类型,根据被切面的方法的名称类型获取对应的bean名称,包括:
5.根据权利要求4所述的方法,其特征在于,所述基于所述bean名称获取存在依赖关系的目标依赖bean,包括:
6.根据权利要求5所述的方法,其特征在于,所述遍历所述bean文件列表判断bean之间是否存在循环依赖,包括:
7.根据权利要求6所述的方法,其特征在于,所述判断有向图中是否存在有向环,包括:
8.一种用于金融业务的循环依赖解除装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,所述电子设备包括至少一个处理器;以及,
10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的用于金融业务的循环依赖解除方法。