当前位置:主页 > java教程 > Spring RequestBodyAdvice拦截

Spring的RequestBodyAdvice拦截浅析

发布:2023-04-15 10:15:02 59


给寻找编程代码教程的朋友们精选了相关的编程文章,网友糜月灵根据主题投稿了本篇教程内容,涉及到Spring、RequestBodyAdvice拦截、Spring、RequestBodyAdvice、Spring RequestBodyAdvice拦截相关内容,已被721网友关注,相关难点技巧可以阅读下方的电子资料。

Spring RequestBodyAdvice拦截

背景

因为项目接口需要进行解密,需要对数据进行统一处理,就使用了ReuqestBodyAdvice进行数据解密处理,但是偶然的发现supports方法会出现执行两次的情况,觉得有点奇异就进行了一次断点调试,然后就发现了执行两次的原因;

过程

1.默认supports方法返回false,表示不做任何处理:

2.默认supports方法返回true,表示对数据进行处理:

如图所示无论supports方法返回true还是false,只要这个ReuqestAdvice存在并且在spring中生效,supports方法都会执行两次;

了解了前置情况接下来就是用断点进行接口调试了:
第一次跳过supports方法后的跳转:

第二次执行完supports方法之后的跳转:

如图所示,如果有经常对看源码或者眼尖的朋友应该就会方法两次执行完supports方法之后跳转的方法名是有区别的:
第一次执行后跳转: beforeBodyRead
第二次执行后跳转: afterBodyRead

结论

如上述的调测结果所示,实现RequestBodyAdvice接口之后的拦截在成功执行的时候会调用两次supports方法.
而执行两次的原因是因为需要分别对beforeBodyRead和afterBodyRead进行判断:
当第一次supports方法返回结果是true的时候表示会执行beforeBodyRead方法
当第二次supports方法返回true的时候表示会执行afterBodyRead方法.
反之亦然
PS: 一个比较容易被人忽视但是找不到解决方法的小细节:
若是Controller类上的方法参数没有加上@RequestBody标签则该RequestBodyAdvice是不会被执行的.
如果上述内容存在问题,麻烦各位留言指出会第一时间修改.

到此这篇关于Spring的RequestBodyAdvice拦截浅析的文章就介绍到这了,更多相关Spring RequestBodyAdvice拦截内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • Spring中BeanFactory FactoryBean和ObjectFactory的三种的区别

    发布:2023-04-26

    关于FactoryBean 和 BeanFactory的对比文章比较多,但是对ObjectFactory的描述就比较少,今天我们对比下这三种的区别,感兴趣的朋友跟随小编一起看看吧


  • springboot接受前端请求的方法实现

    发布:2023-04-21

    本文主要介绍了springboot接受前端请求的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • spring中使用mybatis plus连接sqlserver的方法实现

    发布:2022-10-26

    为网友们分享了关于spring的教程,这篇文章主要介绍了spring中使用mybatis plus连接sqlserver的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • SpringMVC使用MultipartResolver实现文件上传

    发布:2023-03-24

    MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的 checkMultipart() 方法会调用 MultipartResolver 的 isMultipart() 方法判断请求中是否包含文件


  • 详解在SpringBoot如何优雅的使用多线程

    发布:2023-04-17

    这篇文章主要带大家快速了解一下@Async注解的用法,包括异步方法无返回值、有返回值,最后总结了@Async注解失效的几个坑,感兴趣的小伙伴可以了解一下


  • 实例详解springBoot整合CXF并实现用户名密码校验的方法

    发布:2020-02-05

    这篇文章主要介绍了springBoot整合CXF并实现用户名密码校验的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • SpringBoot this调用@Bean效果详解

    发布:2023-04-15

    这篇文章主要介绍了在一个@Bean方法内,this调用同一个类的@Bean方法会有什么效果,我们可以通过bean的名称、bean的类型或者bean的名称+类型来获取容器中的bean


  • SpringBoot整合Retry实现错误重试过程逐步介绍

    发布:2023-03-22

    重试的使用场景比较多,比如调用远程服务时,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次。用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有,感兴趣的可以了解一下


网友讨论