其他分享
首页 > 其他分享> > Spring中的Filter、HandlerInterceptor和AOP

Spring中的Filter、HandlerInterceptor和AOP

作者:互联网

问题来源于我想打印请求和响应结构体,那么怎么做?
网上搜索到相关的有种方式都可以

对三个的关系不太熟,所以大概了解了一下

简要梳理一下一个Spring应用服务处理请求的逻辑首先:

所以这三者功能上都可以做

Interceptor和Filter也试过了,最终选择的是通过AOP来做,优点是这里直接可以获取方法参数(通过ProceedingJoinPoint getArgs())。

而在Intercetpor和Filter中需要从Request/Response中直接操作流,由于流被读取后无法再次读取,所以一般用这种方法都要将流复制一份出来,看起来比较像hack。

这里AOP最大的限制在于Spring默认的代理模式,如果方法参数有类似@Valid的注解,会先执行校验,如果校验失败,那么无法走进我们的AOP。

当然如果想要打印原始的请求参数(而不是方法的入参),那么也不能用AOP。

标签:控制器,调用,Spring,Filter,AOP,HandlerInterceptor
来源: https://www.cnblogs.com/mosakashaka/p/12607807.html