package com.rlovep.aop.anno;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class Aop {
//指定切入点表达式:拦截哪些方法
@Pointcut("execution(* com.rlovep.aop.anno..*.*(..))")
public void pointCut(){
}
@Before("pointCut()")
public void begin(){
System.out.println("开始事务/异常");
}
@After("pointCut()")
public void after(){
System.out.println("提交事务/关闭");
}
@AfterReturning("pointCut()")
public void afterReturning() {
System.out.println("afterReturning()+函数返回");
}
@AfterThrowing("pointCut()")
public void afterThrowing(){
System.out.println("afterThrowing()+出现异常");
}
@Around("pointCut()")
public void around(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("环绕前....");
pjp.proceed(); // 执行目标方法
System.out.println("环绕后....");
}
}