springboot 过滤器、拦截器、AOP的使用场景

AOP与过滤器、拦截器的区别

过滤器,拦截器拦截的是URL。
AOP拦截的是类的元数据(包、类、方法名、参数等)。

  • 过滤器并没有定义业务用于执行逻辑前、后等,仅仅是请求到达就执行。
  • 拦截器有三个方法,相对于过滤器更加细致,有被拦截逻辑执行前、后等。
  • AOP针对具体的代码,能够实现更加复杂的业务逻辑。

三者功能类似,但各有优势,从过滤器–》拦截器–》切面(AOP),拦截规则越来越细致。 执行顺序依次是过滤器、拦截器、切面(AOP)。

在编写相对比较公用的代码时,优先考虑过滤器,然后是拦截器,最后是aop。
比如:
权限校验,一般情况下,所有的请求都需要做登陆校验,此时就应该使用过滤器在最顶层做校验;
日志记录,一般日志只会针对部分逻辑做日志记录,而且牵扯到业务逻辑完成前后的日志记录,因此使用过滤器不能细致地划分模块,此时应该考虑拦截器,
然而拦截器也是依据URL做规则匹配,因此相对来说不够细致,因此我们会考虑到使用AOP实现,AOP可以针对代码的方法级别做拦截,很适合日志功能。

过滤器使用场景

  • 统⼀设置编码
  • 过滤敏感字符
  • 登录校验
  • URL级别的访问权限控制
  • 数据压缩

拦截器使用场景

  • ⽇志记录
  • 权限校验
  • 登录校验
  • 性能检测[检测⽅法的执⾏时间]
  • 其实拦截器和过滤器很像,有些使⽤场景。⽆论选⽤谁都能实现。需要注意的使他们彼此的使⽤范围,触发机制。

切片(AOP)

  • 更加精确细致的业务场景

 

posted @ 2022-11-27 20:31  远洪  阅读(557)  评论(0)    收藏  举报