前置通知:
1 | @Before("execution(public int com.atguigu.spring.aop.ArithmeticCalculator.*(int, int))") |
@Before 表示在目标方法执行之前执行 @Before 标记的方法的方法体.
@Before 里面的是切入点表达式:
在通知中访问连接细节: 可以在通知方法中添加 JoinPoint 类型的参数, 从中可以访问到方法的签名和方法的参数.
实例:
1 | /** |
后置通知:
1 | @After("execution(public int com.atguigu.spring.aop.ArithmeticCalculator.*(int, int))") |
@After 在方法执行之后(无论是否发生异常)执行的代码.在后置通知中不能访问目标方法执行的结果
返回通知:
1 | @AfterReturning(value="execution(public int com.atguigu.spring.aop.ArithmeticCalculator.*(int, int))",returning="result") |
@AfterReturning 在方法正常结束后执行。
异常通知:
1 | @AfterThrowing(value="execution(public int com.atguigu.spring.aop.ArithmeticCalculator.*(int, int))",throwing="result") |
@AfterThrowing 在方法异常时执行,可以访问到异常对象,而且可以指定特定异常通知。
环绕通知:
1 | @Around("execution(public int com.atguigu.spring.aop.ArithmeticCalculator.*(int, int))") |
@Around 环绕通知需要携带ProcessdingJoinPoint类型的参数。