package com.xin.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
/**
* Created by r.x on 2017/8/26.
*/
@Aspect
// 定义切点
@Pointcut("execution(java.util.List com.xin.service.A.getA())")
public void performance() {}
// 定义环绕通知
// 若被通知方法有返回值,则环绕通知必须有返回值!返回值内容可以是方法返回值,也可以自定义
// 环绕通知必须有ProceedingJoinPoint入参。通过调用ProceedingJoinPoint的proceed()方法,使被通知方法正常执行。否则,会造成阻塞
@Around("performance()")
public Object log(ProceedingJoinPoint joinPoint) {
System.out.println("环绕通知---------before");
Object result = null;
try {
result = joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
System.out.println("环绕通知---------after");
return result;
}
@Before("performance()")
public void logB() {
System.out.println("前置通知---------alone before");
}
@After("performance()")
public void logA() {
System.out.println("后置通知----------alone after");
}
}
spring aop 环绕通知
最新推荐文章于 2024-09-09 14:54:07 发布