spring aop 切点的execution配置多个
时间: 2024-09-29 17:03:29 浏览: 38
SpringAOP切点函数实现原理详解
Spring AOP (Aspect Oriented Programming) 的 `@Execution` 注解用于指定通知(Advice)何时执行,它包含几个可选的部分,如 `@Before`, `@AfterReturning`, `@Around` 等。如果你想在一个切点上配置多种执行模式,可以分别针对不同的通知使用不同的 `@Execution` 配置。
例如:
```java
@Aspect
@Component
public class MyAspect {
// 使用 @Before 表示在方法执行之前通知
@Before("@execution(* com.example.service.*.*(..))")
public void beforeAdvice(JoinPoint joinPoint) {
// ...
}
// 使用 @Around 表示包围通知,可以在方法执行前后自定义行为
@Around("@execution(* com.example.service.*.calculate(..))")
public Object aroundAdvice(ProceedingJoinPoint pjp) throws Throwable {
// ...
return pjp.proceed();
}
// 另一个 @AfterReturning 通知,针对特定返回值处理
@AfterReturning(value = "@execution(com.example.service.Calculator.add(..))", returning = "result")
public void afterReturningAdvice(Object result) {
// ...
}
}
```
在这个例子中,我们定义了一个切面,其中包含三个通知:一个在所有 `com.example.service` 包下的方法执行前生效的 `beforeAdvice`,一个环绕通知只针对 `Calculator` 类的 `calculate` 方法,以及一个在 `add` 方法返回后处理结果的 `afterReturningAdvice`。
阅读全文