springboot 过滤器、拦截器、AOP的使用场景
AOP与过滤器、拦截器的区别
过滤器,拦截器拦截的是URL。
AOP拦截的是类的元数据(包、类、方法名、参数等)。
- 过滤器并没有定义业务用于执行逻辑前、后等,仅仅是请求到达就执行。
- 拦截器有三个方法,相对于过滤器更加细致,有被拦截逻辑执行前、后等。
- AOP针对具体的代码,能够实现更加复杂的业务逻辑。
三者功能类似,但各有优势,从过滤器–》拦截器–》切面(AOP),拦截规则越来越细致。 执行顺序依次是过滤器、拦截器、切面(AOP)。
在编写相对比较公用的代码时,优先考虑过滤器,然后是拦截器,最后是aop。
比如:
权限校验,一般情况下,所有的请求都需要做登陆校验,此时就应该使用过滤器在最顶层做校验;
日志记录,一般日志只会针对部分逻辑做日志记录,而且牵扯到业务逻辑完成前后的日志记录,因此使用过滤器不能细致地划分模块,此时应该考虑拦截器,
然而拦截器也是依据URL做规则匹配,因此相对来说不够细致,因此我们会考虑到使用AOP实现,AOP可以针对代码的方法级别做拦截,很适合日志功能。
过滤器使用场景
- 统⼀设置编码
- 过滤敏感字符
- 登录校验
- URL级别的访问权限控制
- 数据压缩
拦截器使用场景
- ⽇志记录
- 权限校验
- 登录校验
- 性能检测[检测⽅法的执⾏时间]
- 其实拦截器和过滤器很像,有些使⽤场景。⽆论选⽤谁都能实现。需要注意的使他们彼此的使⽤范围,触发机制。
切片(AOP)
- 更加精确细致的业务场景
博客里大都是转载的内容,其目的主要用户知识的组织和管理。

浙公网安备 33010602011771号