面向切面编程与过滤器拦截器

相关概念

  • 切面是指待插入的逻辑代码
  • 切入点是指在哪个位置插入切面代码
  • 通知是指在正常代码运行到切入点的位置时,Spring容器等会通知切面代码运行
  • 常用的通知类型有:前置,后置,环绕,后置成功,后置异常~
  • 定义切入点@pointcut

SpringBoot与拦截器

拦截器的重要方法

  • preHandle 返回true执行下个拦截器,返回false执行被拦截
  • postHandle void
  • afterCompletion void

SpringBoot与过滤器

过滤器的重要方法

  • init
  • doFilter
  • destroy

过滤器和拦截器的异同点

  1. 拦截器基于Java反射机制,过滤器基于函数回调机制
  2. 定于拦截器依赖Servlet容器,过滤器不需要
  3. 对于不同的请求拦截器可以初始化多次,过滤器只能只能在容器初始化时被执行一次
  4. 拦截器可以获取Spring容器中的Bean,过滤器不行
    如果只想过滤具有指定特征的URL请求或者session中不包含指定对象的请求可以使用过滤器,如果想在请求被处理前添加通用性的动作,比如打印日志或者监控内存等,可以使用拦截器。