AOP 通知类型

  • AOP 概念:AOP

一、通知类型

  • 前置通知: @Before
  • 后置通知: @After
  • 环绕通知: @Around
  • 返回后通知: @AfterRuturning
  • 抛出异常后通知:@AfterThrowing

二、示例

1.前置通知

  • 当前通知方法在 原始切入点方法执行前 运行
1
2
3
4
@Before("pt()")
public void before(){
System.out.println("before advice ...");
}

2.后置通知

  • 当前通知方法在 原始切入点方法执行后 运行
1
2
3
4
@After("pt")
public void after(){
System.out.println("after advice ...");
}

3.环绕通知

  • 当前通知方法在 原始切入点方法前后 运行
  • 环绕通知一个 ProceedingJoinPoint 类型的参数,可以通过 pjp.proceed 调用原始方法
  • 返回值是一个 Object 类型,需要手动将 pjp.proceed 的结果进行 return
  • 当调用 pjp.proceed 时,必须抛出异常 Throwble
1
2
3
4
5
6
7
8
@Around
public Object around(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("around before advice ...");
// 调用原始方法
Object ret = pjp.proceed();
System.out.println("around after advice ...");
return ret;
}

4.返回后通知

  • 当前通知方法在 原始切入点方法返回值返回后 运行
1
2
3
4
@AfterReturning
public void afterReturning(){
System.out.println("after returning advice ...");
}

5.抛出异常后通知

  • 当前通知方法在 原始切入点方法抛出异常后 运行
1
2
3
4
@AfterThrowing
public void afterThrowing(){
System.out.println("after throwing advice ...");
}

AOP 通知类型
https://blog.pangcy.cn/2023/04/11/后端编程相关/java/spring/AOP 通知类型/
作者
子洋
发布于
2023年4月11日
许可协议