aop注解模式
applicationContext.xml 开启aop注解代理功能
<!--注解模式实现aop切面 开启aop注解功能 开启aop代理功能-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
@Component(value = "LogAdvice")//普通javabean
@Aspect //声明是一个切面类
public class LogAdvice {
/*重命名切入点*/
@Pointcut("execution(* com.xpc.service.*.*(..))")
public void pc(){
}
/*
* 日志切面类
* 前置通知方法
* */
<!--@Before("execution(* com.xpc.service.*.*(..))")-->
@Before("LogAdvice.pc()")
public void before(){
System.out.println("前置通知");
}
/*
* 后置通知
* */
public void after(){
System.out.println("后置通知");
}
/*
* 异常通知
* */
@AfterThrowing("LogAdvice.pc()")
public void excpetion(){
System.out.println("异常通知");
}
/*
* 环绕通知
* */
public Object round(ProceedingJoinPoint point) throws Throwable {
//调用执行前
System.out.println("环绕前通知");
Object obj = point.proceed();//继续调用目标方法
//调用方法之后执行
System.out.println("环绕后通知");
return obj;
}
@Before("execution(* com.xpc.service.*.*(..))")
//前置通知切入点