AOP切入点表达式

切入点表达式标准格式:动作关键字( 访问修饰符 返回值 包名类/接名方法名(参数)异常名)

1
execution (public User com,itheima.service,UserService.findById (int)
  • 动作关键字: 描述切入点的行为动作,例如execution表示执行到指定切入点
  • 访问修饰符 : public,private等,可以省略
  • 返回值
  • 包名
  • 类/接口名
  • 方法名
  • 参数
  • 异常名: 方法定义中抛出指定异常,可以省略

AOP通知类型

前置通知

  • 名称 : @After
  • 类型:方法注解.
  • 位置: 通知方法定义上方
  • 作用:设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方后运行
  • 范例 :
    1
    2
    3
    4
    @After("pt()")
    public void after() {
    System.out.println("after advice ...");
    }
  • 相关属性 : value(默认 ) : 切入点方法名,格式为类名方法名0

    环绕通知

  • 名称 :@Around (重点,常用)
  • 类型方法注解
  • 通知方法定义上方位置
  • 作用:设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前后运行
  • 范例 :
    1
    2
    3
    4
    5
    6
    7
    @Around("pt()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
    System.out.println("around before advice ...");
    Object ret = pjp.proceed();
    System.&ut.println("around after advice ...");
    return ret;
    }