@Aspect //声明这个类是一个切面类 :包含 切入点pointcut 和 通知advice
@Component //声明组件 进入工厂
public class MyAspect {
//切入点:*返回值 这个类下的*方法(.无论参数.)
@Pointcut("execution(* com.zzt.service.UserServiceImpl.*(..))")
public void pc(){}
@Before("pc()")
public void myBefore(JoinPoint a){
System.out.println("target "+a.getTarget());
System.out.println("args "+a.getArgs());
System.out.println("method's name "+a.getSignature().getName());
System.out.println("before~~~~~~~~~~~");
}
@AfterReturning(value = "pc()" , returning="ret")
public void myAfter(JoinPoint a,Object ret){
System.out.println("after~~~~~~~~~~~"+ret);
}
@Around("pc()")
public Object MyInterceptor(ProceedingJoinPoint p) throws Throwable {
System.out.println("interceptor1~~~~");
Object ret = p.proceed();
System.out.println("interceptor2~~~~");
return ret;
}
@AfterThrowing(value = "pc()",throwing = "ex")
public void myThrows(JoinPoint jp,Exception ex){
System.out.println("throws方法");
System.out.println("++++"+ ex.getMessage());
}
}
Spring-AOP(demo)
最新推荐文章于 2024-10-06 20:29:51 发布