过滤器、拦截器、controllerAdvice和aop的介入点 (图片参考自网络)

过滤器、拦截器、controllerAdvice和aop的介入点 (图片参考自网络)

区别:

1 实现机制不同、aop基于动态代理等技术:运行时动态生成class。过滤器拦截器等基于责任链设计模式,其中可能用到反射来增加灵活性。

2 灵活性(拦截粒度)不同,过滤器和拦截器基于url匹配,粒度较粗,aop可以拦截一切,粒度最细。

如何选择:

根据粒度和业务实现难度来选择,需要全局拦截的情况,优先选过滤器,控制器方法级别的拦截优先选拦截器。拦截一切选择aop