环绕通知:需要在通知中定义目标方法的执行!
@param joinPoint 目标方法(获取目标方法信息,多了一个执行方法)
@return 目标方法的返回值
package com.suchuanlin.advice;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class AroundAdvice1 {
/**
* 环绕通知:需要在通知中定义目标方法的执行!
* @param joinPoint 目标方法(获取目标方法信息,多了一个执行方法)
* @return 目标方法的返回值
*/
@Around("com.suchuanlin.pointcut.MyPointCut.pointcut()")
public Object transaction(ProceedingJoinPoint joinPoint){
//保证目标方法的执行即可
Object[] args = joinPoint.getArgs();
Object result = null;
try {
//增强代码 -> before
System.out.println("开启事务...");
result = joinPoint.proceed(args);
System.out.println("结束事务...");
} catch (Throwable e) {
System.out.println("回滚事务...");
throw new RuntimeException(e);
} finally {
}
return result;
}
}