aspect execution 多个方法
时间: 2024-01-01 07:06:03 浏览: 88
谈谈Spring AOP中@Aspect的高级用法示例
AspectJ 支持在一个切面中定义多个切点和多个通知方法来实现对多个方法的拦截和增强。下面是一个示例:
```
@Aspect
public class MyAspect {
@Pointcut("execution(* com.example.demo.service.*.*(..))")
public void pointcut1() {}
@Pointcut("execution(* com.example.demo.controller.*.*(..))")
public void pointcut2() {}
@Before("pointcut1() || pointcut2()")
public void beforeAdvice() {
// 在被拦截方法执行之前执行的代码
}
@AfterReturning("pointcut1() || pointcut2()")
public void afterReturningAdvice() {
// 在被拦截方法正常返回后执行的代码
}
@AfterThrowing("pointcut1() || pointcut2()")
public void afterThrowingAdvice() {
// 在被拦截方法抛出异常后执行的代码
}
@After("pointcut1() || pointcut2()")
public void afterAdvice() {
// 在被拦截方法执行之后执行的代码(无论是否抛出异常)
}
}
```
在上面的示例中,我们定义了两个切点 `pointcut1` 和 `pointcut2`,分别用于匹配 `com.example.demo.service` 包和 `com.example.demo.controller` 包中的所有方法。然后,我们在四个通知方法上使用逻辑运算符 `||` 将两个切点组合起来,以便在多个方法上执行相同的通知逻辑。
阅读全文