一种基于Spring远程调用的异常处理方法和系统技术方案

技术编号:33710646 阅读:22 留言:0更新日期:2022-06-06 08:42
本发明专利技术公开了一种基于Spring远程调用的异常处理方法和系统,所述方法包括:构建服务器异常处理器,并定义所述服务器异常处理基类和相关业务参数;在所述服务器异常处理器中构建拦截注解,生成远程服务拦截器,通过所述远程服务拦截器拦截业务数据;根据所述服务器异常处理基类判断远程服务拦截器拦截的业务数据是否是异常业务数据;构建客户端异常处理器,并定义所述客户端异常处理基类和注解;根据所述客户端异常处理注解生成Spring代理,通过所述Spring代理拦截客户端执行方法;调用所述客户端异常处理器和客户端异常处理基类对拦截的客户端执行方法进行异常判断和处理。拦截的客户端执行方法进行异常判断和处理。拦截的客户端执行方法进行异常判断和处理。

【技术实现步骤摘要】
一种基于Spring远程调用的异常处理方法和系统


[0001]本专利技术涉及微服务
,特别涉及一种基于Spring远程调用的异常处理方法和系统。

技术介绍

[0002]目前在微服务器架构中,随着业务的增加,每个项目的开发者会在自身的开发业务中定义异常,并将定义异常捕获后转换为远程服务异常,然而上述项目中不同的开发者在处理不同的业务时都会自定义其业务异常同时又需trycatch其业务异常然后转换为远程服务异常,同时客户端又需捕获其远程服务异常转换为业务异常,由于异常处理过程比较长且复杂会导致一些开发者的疏忽同时会导致业务代码臃肿。

技术实现思路

[0003]本专利技术其中一个专利技术目的在于,提供一种基于Spring远程调用的异常处理方法和系统,所述方法和系统通过解耦业务处理逻辑和异常处理逻辑,从而可以实现异常处理高效处理和灵活扩展。使得异常处理逻代码实现可以更加简单高效。
[0004]本专利技术另一个专利技术目的在于,提供一种基于Spring远程调用的异常处理方法和系统,所述方法和系统通过同时定义异常处理规则、服务器异常拦截处理器注解和客户端异常拦截处理器注解的方式进行异常捕获处理,减少业务处理过程中流程长度。
[0005]本专利技术另一个专利技术目的在于,提供一种基于Spring远程调用的异常处理方法和系统,所述方法和系统通过Spring创建Bean时为远程服务服务端添加异常处理拦截器统一处理服务端抛出的业务异常,同时为远程服务客户端构建客户端代理在代理端调用方法时捕获其远程服务异常同时转换为客户端需要的业务异常。
[0006]为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于Spring远程调用的异常处理方法,所述方法包括:
[0007]构建服务器异常处理器,并定义所述服务器异常处理基类和相关业务参数;
[0008]在所述服务器异常处理器中构建拦截注解,生成远程服务拦截器,通过所述远程服务拦截器拦截业务数据;
[0009]根据所述服务器异常处理基类判断远程服务拦截器拦截的业务数据是否是异常业务数据;
[0010]构建客户端异常处理器,并定义所述客户端异常处理基类和注解;
[0011]根据所述客户端异常处理注解生成Spring代理,通过所述Spring代理拦截客户端执行方法;
[0012]调用所述客户端异常处理器和客户端异常处理基类对拦截的客户端执行方法进行异常判断和处理。
[0013]根据本专利技术其中一个较佳实施例,所述定义所述服务器异常处理基类方法包括:获取业务数据,根据所述业务参数业务异常参数,其中所述业务异常参数包括错误业务编
码、错误信息参数和错误内容,根据所述业务异常参数构建完整的业务异常数据,并实现所述业务异常数据的基类。
[0014]根据本专利技术另一个较佳实施例,通过所述远程服务拦截器获取服务器的业务数据后,在所述拦截器中捕获业务异常参数,并判断所述业务异常参数是否属于定义的业务异常基类,若是则将所述业务异常参数组建为完整的业务异常数据写入到远程服务中。
[0015]根据本专利技术另一个较佳实施例,所述客户端异常处理器处理客户端异常的方法包括:在客户端装配定义的异常处理注解后,通过spring bean的创建过程中判断bean是否存在客户端装配的异常处理注解,若存在所述异常处理注解,则进一步对所述bean生成Spring CGLIB代理,通过所述Spring CGLIB代理拦截客户端执行方法,并判断拦截到的客户端执行方法是否存异常,若存在则根据所述Spring CGLIB代理中的注解判断异常处理类的类型,根据所述异常处理类的类型调用对应的异常处理器处理该异常。
[0016]根据本专利技术另一个较佳实施例,对所述bean生成Spring CGLIB代理并拦截对应异常的方法包括:定义bean类工厂,通过所述bean类工厂的接口获取实例bean,在获取所述实例bean时,构建所述Spring的Enhancer类实例,并将所述Spring的Enhancer类实例设置为所述bean的代理类,同时设置所述Enhancer类实例的代理类型为bean类类型,进一步设置回调处理函数,通过所述回调处理函数拦截bean实例并捕获异常。
[0017]根据本专利技术另一个较佳实施例,所述客户端异常处理注解包括handle信息,在所述客户端定义异常处理基类,所述handle信息包含异常处理类型,其中所述handle信息异常处理类型的值为所述异常处理基类的子类,根据所述异常处理基类实现的方法处理对应子类的客户端异常。
[0018]根据本专利技术另一个较佳实施例,在获取客户端异常类型后,若需要将所述客户端异常类型判定为全局默认异常,则对所述客户异常类型添加全局异常注解。
[0019]根据本专利技术另一个较佳实施例,所述服务器异常处理器通过Grpc拦截器提供的关闭数据流将数据返回方法将拦截的异常数据写入到远程服务中。
[0020]为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于Spring远程调用的异常处理系统,所述系统执行所述一种基于Spring远程调用的异常处理方法。
[0021]本专利技术进一步提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序可被处理器执行所述一种基于Spring远程调用的异常处理方法。
附图说明
[0022]图1显示的是本专利技术一种基于Spring远程调用的异常处理方法的流程示意图。
具体实施方式
[0023]以下描述用于揭露本专利技术以使本领域技术人员能够实现本专利技术。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本专利技术的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本专利技术的精神和范围的其他技术方案。
[0024]可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不
能理解为对数量的限制。
[0025]请结合图,本专利技术公开了一种基于Spring远程调用的异常处理方法和系统,其中所述方法主要包括如下步骤:首先需要在服务器端定义服务器异常处理基类和业务参数,以及定义服务器异常拦截注解,其中所述服务器异常拦截注解包括:EnableGrpcServerExceptionCatch,进一步生成服务器拦截器,通过所服务器异常拦截注解装配拦截逻辑后,实现远程服务的拦截器ServerInterceptor。在所述拦截器内对服务器业务操作进行拦截,并进一步捕获服务器业务操作的异常,判断所述捕获的异常是否属于上述服务器异常处理基类实现,若是则获取波或服务器业务操作的异常参数,将所述异常参数封装成完整的异常数据作为远程服务异常写入到远程服务中。其中所述方法还包括在客户端定义异常处理基类,并定义客户端异常处理注解RpcExceptionHandler,其中所述客户端异常处理注解R本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spring远程调用的异常处理方法,其特征在于,所述方法包括:构建服务器异常处理器,并定义所述服务器异常处理基类和相关业务参数;在所述服务器异常处理器中构建拦截注解,生成远程服务拦截器,通过所述远程服务拦截器拦截业务数据;根据所述服务器异常处理基类判断远程服务拦截器拦截的业务数据是否是异常业务数据;构建客户端异常处理器,并定义所述客户端异常处理基类和注解;根据所述客户端异常处理注解生成Spring代理,通过所述Spring代理拦截客户端执行方法;调用所述客户端异常处理器和客户端异常处理基类对拦截的客户端执行方法进行异常判断和处理。2.根据权利要求1所述的一种基于Spring远程调用的异常处理方法,其特征在于,所述定义所述服务器异常处理基类方法包括:获取业务数据,根据所述业务参数业务异常参数,其中所述业务异常参数包括错误业务编码、错误信息参数和错误内容,根据所述业务异常参数构建完整的业务异常数据,并实现所述业务异常数据的基类。3.根据权利要求1所述的一种基于Spring远程调用的异常处理方法,其特征在于,通过所述远程服务拦截器获取服务器的业务数据后,在所述远程服务拦截器中捕获业务异常参数,并判断所述业务异常参数是否属于定义的业务异常基类,若是则将所述业务异常参数组建为完整的业务异常数据写入到远程服务中。4.根据权利要求1所述的一种基于Spring远程调用的异常处理方法,其特征在于,所述客户端异常处理器处理客户端异常的方法包括:在客户端装配定义的异常处理注解后,通过spring bean的创建过程中判断bean是否存在客户端装配的异常处理注解,若存在所述异常处理注解,则进一步对所述bean生成Spring CGLIB代理,通过所述Spring CGLIB代理拦截客户端执行方法,并判断拦截到的客户端执行方法是否存异常,若存在则根据所述Spring CGLIB代理中的注解判断异常处理类的类型,根据所述异...

【专利技术属性】
技术研发人员:舒超群辛晶艺叶正卿魏美钟
申请(专利权)人:杭州每刻科技有限公司
类型:发明
国别省市:

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

1