首页> 中国专利> 基于Spring Restful框架实现公共控制逻辑的方法及装置

基于Spring Restful框架实现公共控制逻辑的方法及装置

摘要

本发明公开了一种基于Spring Restful框架实现公共控制逻辑的方法及装置,其中该方法包括:在Spring Restful框架中,确定待插入公共控制逻辑的扩展点;在确定的扩展点插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器;调用插入的自定义数据处理器,对来自用户前端的HTTP请求执行公共控制逻辑处理。本发明能够在对Spring Restful框架影响最小的情况下,在Spring Restful框架中实现HTTP请求的公共控制逻辑处理,大大提高代码复用率。

著录项

  • 公开/公告号CN112363720A

    专利类型发明专利

  • 公开/公告日2021-02-12

    原文格式PDF

  • 申请/专利权人 中国银行股份有限公司;

    申请/专利号CN202011376567.0

  • 发明设计人 黄河峰;

    申请日2020-11-30

  • 分类号G06F8/36(20180101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人谷敬丽;周晓飞

  • 地址 100818 北京市西城区复兴门内大街1号

  • 入库时间 2023-06-19 09:54:18

说明书

技术领域

本发明涉及软件开发技术领域,尤其涉及一种基于Spring Restful框架实现公共控制逻辑的方法及装置。

背景技术

本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在Java领域,Spring开发框架已经占领了绝对的主导地位。无论是传统的单体应用,还是新兴的分布式应用,Spring、Spring Boot、Spring Cloud已经被广泛使用。国内厂商提供的云平台解决方案中基本上也是基于Spring Cloud进行的包装。

在分布式架构下,系统的通讯方式主要包括两种:RPC和Restful。其中,RPC以Dubbo为主,优点是基于TCP的长连接方式,性能较好;缺点是要求客户端和服务端是同构系统,且必须是强接口依赖关系。Restful以Spring Restful为主,使用Http+Json的方式进行通讯,性能较RPC差一些。

Spring的标准Restful使用了Spring MVC来实现,开发人员利用Spring Boot提供的组件和注解方式,可以快速配置Restful接口,仅需编写具体的业务逻辑代码。但这种方式存在一个问题,对于一些公共控制逻辑(例如,安全、访问控制、数据格式校验、Session检查、防重控制、权限控制等),不可能在每个Restful业务接口内去实现。由于这些逻辑与具体的业务无关,若在每个Restful业务接口都去做控制,会导致代码复用率变低、维护困难、性能也会变差。

针对上述问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例中提供了一种基于Spring Restful框架实现公共控制逻辑的方法,用以解决现有技术在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑,导致代码复用率低的技术问题,该方法包括:在Spring Restful框架中,确定待插入公共控制逻辑的扩展点;在确定的扩展点插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器;调用插入的自定义数据处理器,对来自用户前端的HTTP请求执行公共控制逻辑处理。

本发明实施例中还提供一种基于Spring Restful框架实现公共控制逻辑的装置,用以解决现有技术在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑,导致代码复用率低的技术问题,该装置包括:公共控制逻辑扩展点确定模块,用于在SpringRestful框架中,确定待插入公共控制逻辑的扩展点;公共控制逻辑插入模块,用于在确定的扩展点插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器;公共控制逻辑执行模块,用于调用插入的自定义数据处理器,对来自用户前端的HTTP请求执行公共控制逻辑处理。

本发明实施例中还提供了一种计算机设备,用以解决现有技术在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑,导致代码复用率低的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于Spring Restful框架实现公共控制逻辑的方法。

本发明实施例中还提供了一种计算机可读存储介质,用以解决现有技术在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑,导致代码复用率低的技术问题,该计算机可读存储介质存储有执行上述基于Spring Restful框架实现公共控制逻辑的方法的计算机程序。

本发明实施例中,在Spring Restful框架中,确定待插入一些公共控制逻辑的扩展点,并在确定的扩展点上插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器,以便通过调用插入的自定义数据处理器,来对来自用户前端的HTTP请求执行公共控制逻辑处理。与现有技术中在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑的技术方案相比,本发明实施例能够在对Spring Restful框架影响最小的情况下,在Spring Restful框架中实现HTTP请求的公共控制逻辑处理,大大提高代码复用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中提供的一种基于Spring Restful框架实现公共控制逻辑的方法流程图;

图2为本发明实施例中提供的一种Spring MVC执行处理流程图;

图3为本发明实施例中提供的一种基于Spring Restful框架实现HTTP请求会话检查的方法流程图;

图4为本发明实施例中提供的一种处理器执行链示意图;

图5为本发明实施例中提供的一种基于Spring Restful框架实现HTTP请求数据转换的方法流程图;

图6为本发明实施例中提供的一种基于Spring Restful框架实现HTTP请求数据校验的方法流程图;

图7为本发明实施例中提供的一种基于Spring Restful框架实现公共控制逻辑的系统示意图;

图8为本发明实施例中提供的一种基于Spring Restful框架实现公共控制逻辑的装置示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本发明实施例中提供了一种基于Spring Restful框架实现公共控制逻辑的方法,图1为本发明实施例中提供的一种基于Spring Restful框架实现公共控制逻辑的方法流程图,如图1所示,该方法包括如下步骤:

S101,在Spring Restful框架中,确定待插入公共控制逻辑的扩展点;

S102,在确定的扩展点插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器;

S103,调用插入的自定义数据处理器,对来自用户前端的HTTP请求执行公共控制逻辑处理。

需要说明的是,本发明实施例中HTTP请求可以是银行业务系统中基于HTTP协议的各种交易请求,对于银行业务系统来说,尤其是渠道类业务系统,直接面向客户提供服务,通常需要对用户前端提交的请求进行数据合法性、规范性等校验。为了确保输入数据的有效性,避免一些脏数据或恶意攻击数据的输入,银行的各种业务系统需要增加一些对HTTP请求的公共控制逻辑(包括但不限于:安全访问控制、数据格式转换或校验、会话检查、防重控制或权限控制等),以对用户前端提交的各种交易请求(例如,HTTP请求)进行统一规范和处理。

由于对HTTP请求执行的一些公共控制逻辑,与具体业务无关,因而,本发明实施例中,将对HTTP请求执行的公共控制逻辑放在Spring Restful框架中执行,能够避免在各个Restful业务接口中实现重复实现这些公共控制逻辑,导致代码冗余度较高的问题。在具体实施时,可以自定义一些执行公共控制逻辑处理的自定义处理器来实现公共控制逻辑的处理。例如,将银行业务系统中数据校验处理、会话检查处理等一系列基于银行业务场景的公共控制逻辑,封装为自定义处理器,例如,自定义数据转换器、自定义会话检查处理器等。

具体地,在定义一些对HTTP请求执行公共控制逻辑处理的自定义处理器后,可以在Spring Restful框架中寻找一些待插入公共控制逻辑的扩展点,将定义的自定义数据处理器,插入到这些扩展点,以实现在Spring Restful框架中实现对HTTP请求的公共控制逻辑处理的目的。

由上可知,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的方法,在Spring Restful框架中,确定待插入一些公共控制逻辑的扩展点,并在确定的扩展点上插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器,以便通过调用插入的自定义数据处理器,来对来自用户前端的HTTP请求执行公共控制逻辑处理。

通过本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的方法,能够在对Spring Restful框架影响最小的情况下,在Spring Restful框架中实现HTTP请求的公共控制逻辑处理,大大提高代码复用率。

由于Spring Restful框架使用Spring MVC来实现,下面对Spring MVC的执行流程进行说明,以便在Spring Restful框架中确定插入一些公共控制逻辑的扩展点。

如图2所示,Spring MVC的执行处理流程具体包括:

①用户端发起HTTP请求;

②派发模块(DispatcherServlet)将请求派发给处理器映射(handlerMapping),找到对应的处理器适配器;(HandlerAdapter)

③派发模块调用处理器适配器进行处理;

④处理器适配调用消息转换模块对原始消息进行:数据转换、格式化、数据验证等一系列操作。最后调用处理器(handler)进行处理;

⑤处理结果被封装为模型和视图(modelAndView)返回给派发模块;

⑥派发模块获取对应的视图解析器(viewResolver);

⑦视图解析器使用模型数据填充和渲染视图。

⑧将生成的视图展示给用户。

分析可知,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的方法,可以将上述步骤③或④确定为扩展点。上述步骤③中,具有一个处理器执行链,因而,可以在处理器执行链中,插入自定义拦截器,对HTTP请求进行一些预处理(例如,会话有效性检查),编写相应的公共控制逻辑代码。而上述步骤④的数据转换阶段,可以自定义对HTTP请求执行预设数据转换操作的自定义数据处理器和对HTTP请求执行预设数据校验操作的自定义数据校验器。

图3为本发明实施例中提供的一种基于Spring Restful框架实现HTTP请求会话检查的方法流程图,如图3所示,包括如下步骤:

S102a,在处理器执行链(HandlerExecutionChain)中,插入对HTTP请求执行会话有效性检查的自定义拦截器;

S103a,调用插入的自定义拦截器,对HTTP请求执行会话有效性检查;如果检查结果为通过,则继续执行HTTP请求的后续操作;如果检查结果为失败,则拒绝执行HTTP请求的后续操作。

在一个实施例中,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的方法还可以包括如下步骤:接收来自用户前端的HTTP请求;将HTTP请求派发给处理器映射器;则上述S102a可以通过如下步骤来实现:接收处理器映射器根据HTTP请求返回的处理器执行链;在处理器映射器返回的处理器执行链中,插入对HTTP请求执行会话有效性检查的自定义拦截器。

图4为本发明实施例中提供的一种处理器执行链示意图,如图4所示,处理器执行链由一个处理器(handler)和一组处理器拦截器(handlerInterceptor)组成。每个拦截器都有一个预处理方法(prehandle)和一个后处理方法(postHandle),其中,于处理方法在请求执行前处理,后处理方法在请求回执行后,返回结果前进行处理,本发明实施例在在处理器执行链中插入公共控制逻辑的时候,可在预处理方法中执行会话有效检查,以便针对来自用户前端的HTTP请求,检查其会话是否有效,具体实施时,可以插入一个会话检查拦截器(SessionCheckInterceptor),实现预处理(preHandle)方法。在预处理方法中,可对HTTP请求进行会话有效性检查,如果检查结果为通过,则返回真的检查结果;如果检查结果为失败,则返回假的检查结果。当返回的检查结果为假时,后续的拦截器和处理器都不会执行。整个执行马上失败返回。

图5为本发明实施例中提供的一种基于Spring Restful框架实现HTTP请求数据转换的方法流程图,如图5所示,包括如下步骤:

S102b,在调用处理器适配器对HTTP请求执行数据转换操作的过程中,插入对HTTP请求执行预设数据转换操作的自定义数据转换器;

S103b,调用插入的自定义数据转换器,对HTTP请求执行预设数据转换操作。

在具体实施时,如果要对HTTP请求的数据转换进行自定义,则可自定义数据转换器(AbstractHttpMessageConverter),该自定义数据转换器可实现如下三个抽象方法:

①支持方法,用于判断当前转换器是否生效;

②读方法,用于将请求数据转换为指定的目标对象类型;

③写方法,用于将源对象类型转换为指定的输出数据。

需要说明的是,只有支持方法返回结果为真时,才会进行另外两个方法的调用;

例如,对于日期类型数据的转换,前端上送的日期一般是字符串,如2020 10-112:00:00,自定义数据转换器可将字符串类型数据转换为Java的Date类型数据。

图6为本发明实施例中提供的一种基于Spring Restful框架实现HTTP请求数据校验的方法流程图,如图6所示,包括如下步骤:

S102c,在调用处理器适配器对HTTP请求执行数据校验操作的过程中,插入对HTTP请求执行预设数据校验操作的自定义数据校验器;

S103c,调用插入的自定义数据校验器,对HTTP请求执行预设数据校验操作。

在具体实施时,如果要对HTTP请求的数据校验进行自定义,则可自定义数据校验器,以实现对HTTP请求数据的验证逻辑。具体可通过如下步骤来实现:

①编写自定义的校验注解类。校验注解类主要功能为标记作用,标记在目标实体对象的字段上。代表该字段需要按照对应的校验器进行校验。

如在Context对象上的字段innerMap上添加@ContextValid注解:

代码实现如下:

②在处理器方法(handlerMethod)上对应的参数上声明验证注解@Valid;

代码实现如下:

③编写注解@ContextValid;

代码实现如下:

其中明确指明该注解要被验证的验证器是哪个,通过“validateBy=”来实现。

④编写注解验证器;

实现约束验证器接口(ConstraintValidator),实现验证方法,添加自己的验证逻辑。当返回假时,验证失败,整个交易结束。

例如,自定义数据校验器可以校验日期是否符合日期格式,金额必须符合货币金额格式,比如123.45,一般会在系统中用正则表达式进行控制;或者,对于用户ID,要求必须是数字、字母和特殊字符的强数据格式,不能使简单的纯数字,纯字母。

在一个实施例中,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的方法,还可以包括如下步骤:获取HTTP请求的响应结果数据;将HTTP请求的响应结果数据封装为数据模型和视图;利用数据模型填充和渲染视图,生成HTTP请求的响应视图;将HTTP请求的响应视图,返回至用户前端。

图7为本发明实施例中提供的一种基于Spring Restful框架实现公共控制逻辑的系统示意图,如图7所示,过滤器在整个交易执行过程的最前端,也在spring框架的前面,主要是实现容器级别的请求处理;处理器执行链中可插入自定义拦截器,对HTTP请求执行会话有效性检查等预处理的公共控制逻辑;自定义数据转换器用于对HTTP请求执行预设数据转换操作;自定义数据校验器用于对HTTP请求执行预设数据校验操作。

基于同一发明构思,本发明实施例中还提供了一种基于Spring Restful框架实现公共控制逻辑的装置,如下面的实施例所述。由于该装置解决问题的原理与基于SpringRestful框架实现公共控制逻辑的方法相似,因此该装置的实施可以参见基于SpringRestful框架实现公共控制逻辑的方法的实施,重复之处不再赘述。

图8为本发明实施例中提供的一种基于Spring Restful框架实现公共控制逻辑的装置示意图,如图8所示,该装置包括:公共控制逻辑扩展点确定模块81、公共控制逻辑插入模块82和公共控制逻辑执行模块83。

其中,公共控制逻辑扩展点确定模块81,用于在Spring Restful框架中,确定待插入公共控制逻辑的扩展点;公共控制逻辑插入模块82,用于在确定的扩展点插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器;公共控制逻辑执行模块83,用于调用插入的自定义数据处理器,对来自用户前端的HTTP请求执行公共控制逻辑处理。

由上可知,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的装置,通过公共控制逻辑扩展点确定模块81在Spring Restful框架中,确定待插入一些公共控制逻辑的扩展点;通过公共控制逻辑插入模块82在确定的扩展点上插入对HTTP请求执行公共控制逻辑处理的自定义数据处理器;通过公共控制逻辑执行模块83调用插入的自定义数据处理器,来对来自用户前端的HTTP请求执行公共控制逻辑处理。

通过本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的装置,能够在对Spring Restful框架影响最小的情况下,在Spring Restful框架中实现HTTP请求的公共控制逻辑处理,大大提高代码复用率。

在一个实施例中,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的装置还可以包括:HTTP请求接收模块84,用于接收来自用户前端的HTTP请求;HTTP请求派发模块85,用于将HTTP请求派发给处理器映射器;其中,公共控制逻辑插入模块82还用于:接收所述处理器映射器根据所述HTTP请求返回的处理器执行链;在所述处理器映射器返回的处理器执行链中,插入对HTTP请求执行会话有效性检查的自定义拦截器。

在一个实施例中,本发明实施例中提供的基于Spring Restful框架实现公共控制逻辑的装置还可以包括:响应结果数据获取模块86,用于HTTP请求响应模块,用于获取HTTP请求的响应结果数据;响应结果数据封装模块87,用于将HTTP请求的响应结果数据封装为数据模型和视图;前端视图生成模块88,用于利用数据模型填充和渲染视图,生成HTTP请求的响应视图;HTTP请求响应模块89,用于将HTTP请求的响应视图,返回至用户前端。

基于同一发明构思,本发明实施例中还提供了一种计算机设备,用以解决现有技术在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑,导致代码复用率低的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于Spring Restful框架实现公共控制逻辑的方法。

基于同一发明构思,本发明实施例中还提供了一种计算机可读存储介质,用以解决现有技术在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑,导致代码复用率低的技术问题,该计算机可读存储介质存储有执行上述基于Spring Restful框架实现公共控制逻辑的方法的计算机程序。

综上所述,本发明实施例中提供了一种基于Spring Restful框架实现公共控制逻辑的方法、装置、计算机设备及计算机可读存储介质,基于Spring Restful框架,在派发模块调用处理器适配器对HTTP请求进行处理的过程中,插入自定义拦截器;在处理器适配调用消息转换模块对原始消息进行转换或校验的过程中,调用自定义数据转换器或自定义数据校验器来实现,利用自定义拦截器、自定义数据转换器或自定义数据校验器来实现对HTTP请求的一些公共控制逻辑处理,与现有技术中在每个Restful业务接口中重复实现对HTTP请求执行的公共控制逻辑的技术方案相比,本发明实施例在Spring Restful框架中实现HTTP请求的公共控制逻辑处理,能够大大提高代码复用率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号