基于面向切面编程的类实现方法、装置、设备及介质制造方法及图纸

技术编号:36537533 阅读:11 留言:0更新日期:2023-02-01 16:25
本申请公开了一种基于面向切面编程的类实现方法、装置、设备及介质,涉及Spring框架技术领域。该方法包括:接收用户终端发送的操作请求,并确定所述操作请求中需要调用的目标接口;其中,所述目标接口为基于面向切面编程利用代理对象实现不同类型的类的调用的接口;基于所述目标接口收集预先构建的用于确定所述类的自定义注解,并对所述代理对象进行依赖注入以得到所述自定义注解的配置信息;当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类。通过本申请的技术方案,可以降低代码及业务的耦合度,并且基于一个接口实现多个类。个接口实现多个类。个接口实现多个类。

【技术实现步骤摘要】
基于面向切面编程的类实现方法、装置、设备及介质


[0001]本专利技术涉及Spring框架
,特别涉及一种基于面向切面编程的类实现方法、装置、设备及介质。

技术介绍

[0002]在实际的项目开发过程中存在不同的业务场景。以下发通知的业务场景为例,如果用户A提交了工单,需要通知到用户B,通知方式有多种:短信、钉钉、邮箱等。根据需求可以自定义选择不同的通知方式,可能是用一种方式进行通知,也可能是两种方式,甚至是所有的通知方式。与上述场景类似的还有一些导出业务功能,例如有些导出功能需要支持导出Word、Excel、Pdf、Html中的几种。
[0003]把下发通知的业务场景作为例子进行处理,如图1所示,前提条件为定义一个下发通知的接口(NoticeService),所有的通知方式都实现了这个接口。进一步的,现有技术的处理方式中,为了可以根据需求选择通知方式,需要定义实现类的别名,进而可以由已知的自定义配置得出对应的通知方式,再依次调用不同通知实现类的方法去下发通知,如图2所示。虽然现有技术中通过多次注入接口的多个实现类,再分别依次调用实现类的下发通知方法固然可以完成需求,但是这种方式有以下几个缺陷:首先,要保证可以同时注入一个接口的多个实现类的前提是为不同的实现类定义各自的别名,否则项目启动会提示编译异常;其次,为不同实现类定义别名后再引入多个实现类,最后调用不同实现类的下发通知方法,造成代码编写比较繁琐。另外,程序执行时,按照顺序依次下发通知,如果前面的下发通知方法报错,后面的方法就无法执行,代码耦合度比较高。
[0004]综上,如何在实现类的过程中简单编写业务代码,降低代码及业务的耦合是目前有待解决的问题。

技术实现思路

[0005]有鉴于此,本专利技术的目的在于提供一种基于面向切面编程的类实现方法、装置、设备及介质,能够在实现类的过程中简单编写业务代码,降低代码及业务的耦合。其具体方案如下:
[0006]第一方面,本申请公开了一种基于面向切面编程的类实现方法,包括:
[0007]接收用户终端发送的操作请求,并确定所述操作请求中需要调用的目标接口;其中,所述目标接口为基于面向切面编程利用代理对象实现不同类型的类的调用的接口;
[0008]基于所述目标接口收集预先构建的用于确定所述类的自定义注解,并对所述代理对象进行依赖注入以得到所述自定义注解的配置信息;
[0009]当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类。
[0010]可选的,所述基于所述目标接口收集预先构建的用于确定所述类的自定义注解之前,还包括:
[0011]定义自定义注解类,并基于所述自定义注解类实现MergedBeanDefinitionPostProcessor接口;
[0012]基于所述MergedBeanDefinitionPostProcessor接口,对postProcessMergedBeanDefinition方法进行重写,以得到所述自定义注解。
[0013]可选的,所述对所述代理对象进行依赖注入以得到所述自定义注解的配置信息,包括:
[0014]基于所述自定义注解类继承InstantiationAwareBeanPostProcessorAdapter类,并根据继承后的自定义注解类对postProcessProperties方法进行重写,以实现对所述代理对象的依赖注入。
[0015]可选的,所述当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类,包括:
[0016]当调用所述代理对象时,对所述配置信息进行解析并获取解析后的配置信息中用于确定所述类的选择方式的value值和解析后的配置信息中用于通过数组指定所述类的serviceIds值;
[0017]根据所述value值和所述serviceIds值进行反射调用,以确定出需要调用的目标类。
[0018]可选的,所述根据所述属性类型的值进行反射调用,以确定出需要调用的目标类,包括:
[0019]如果所述value值为all,则直接将所述自定义注解中的所有类确定为所述目标类;
[0020]如果所述value值为assign,则根据所述serviceIds中数组的值确定出需要调用的所述目标类。
[0021]可选的,所述的基于面向切面编程的类实现方法,还包括:
[0022]当所述类中存在新增类时,更新所述自定义注解并对所述代理对象进行依赖注入以得到更新后自定义注解的更新配置信息;
[0023]相应的,所述当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类,包括:
[0024]当调用所述代理对象时,对所述更新配置信息进行解析并根据解析后的更新配置信息中的属性值进行反射调用,以确定出需要调用的目标类。
[0025]可选的,所述当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类之后,包括:
[0026]当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值利用handler处理器进行反射调用,以确定出需要调用的目标类。
[0027]第二方面,本申请公开了一种基于面向切面编程的类实现装置,包括:
[0028]目标接口确定模块,用于接收用户终端发送的操作请求,并确定所述操作请求中需要调用的目标接口;其中,所述目标接口为基于面向切面编程利用代理对象实现不同类型的类的调用的接口;
[0029]注解收集模块,用于基于所述目标接口收集预先构建的用于确定所述类的自定义注解;
[0030]依赖注入模块,用于对所述代理对象进行依赖注入以得到所述自定义注解的配置信息;
[0031]目标类确定模块,用于当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类。
[0032]第三方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如前所述的基于面向切面编程的类实现方法。
[0033]第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如前所述的基于面向切面编程的类实现方法。
[0034]本申请中,接收用户终端发送的操作请求,并确定所述操作请求中需要调用的目标接口;其中,所述目标接口为基于面向切面编程利用代理对象实现不同类型的类的调用的接口;基于所述目标接口收集预先构建的用于确定所述类的自定义注解,并对所述代理对象进行依赖注入以得到所述自定义注解的配置信息;当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于面向切面编程的类实现方法,其特征在于,包括:接收用户终端发送的操作请求,并确定所述操作请求中需要调用的目标接口;其中,所述目标接口为基于面向切面编程利用代理对象实现不同类型的类的调用的接口;基于所述目标接口收集预先构建的用于确定所述类的自定义注解,并对所述代理对象进行依赖注入以得到所述自定义注解的配置信息;当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类。2.根据权利要求1所述的基于面向切面编程的类实现方法,其特征在于,所述基于所述目标接口收集预先构建的用于确定所述类的自定义注解之前,还包括:定义自定义注解类,并基于所述自定义注解类实现MergedBeanDefinitionPostProcessor接口;基于所述MergedBeanDefinitionPostProcessor接口,对postProcessMergedBeanDefinition方法进行重写,以得到所述自定义注解。3.根据权利要求2所述的基于面向切面编程的类实现方法,其特征在于,所述对所述代理对象进行依赖注入以得到所述自定义注解的配置信息,包括:基于所述自定义注解类继承InstantiationAwareBeanPostProcessorAdapter类,并根据继承后的自定义注解类对postProcessProperties方法进行重写,以实现对所述代理对象的依赖注入。4.根据权利要求1所述的基于面向切面编程的类实现方法,其特征在于,所述当调用所述代理对象时,对所述配置信息进行解析并根据解析后的配置信息中的属性值进行反射调用,以确定出需要调用的目标类,包括:当调用所述代理对象时,对所述配置信息进行解析并获取解析后的配置信息中用于确定所述类的选择方式的value值和解析后的配置信息中用于通过数组指定所述类的serviceIds值;根据所述value值和所述serviceIds值进行反射调用,以确定出需要调用的目标类。5.根据权利要求4所述的基于面向切面编程的类实现方法,其特征在于,所述根据所述属性类型的值进行反射调用,以确定出需要调用的目标类,包括:如果所述value值...

【专利技术属性】
技术研发人员:李震刘博
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1