版权声明: https://blog.csdn.net/qq_35315154/article/details/84584771
一、excution函数的使用
语法:[访问修饰符] 返回值 包名.类名.方法名 (参数)
举例1:public * com.test.Dao.userDal.save(..)//*任意返回值, .. 任意参数
二、注解开发
步骤1:引入相关JAR包
步骤2:打开XML中的注释,
步骤3:配置切面类的bean,要增强类的bean,注解切面类
//切面类
@Aspect
public class A{
//before是前置通知
@Before(value="execution(* 包.类名.方法名(..))")//要增强的方法
public void fun(){}//增强方法
//后置通知
@AfterReturning(value="execution(* com.testSpring.AOP.Dao.UserDao.delete(..))" ,returning="result")
public static void getMD5Del(Object result) {
System.out.println("被增强方法的返回值是" + result);
}
//环绕通知
@Around(value="execution(* com.testSpring.AOP.Dao.UserDao.update(..))",argNames="joinpoint")
public static void getMD5Up(ProceedingJoinPoint joinpoint) throws Throwable {
System.out.println("around before");
Object obj = joinpoint.proceed();
System.out.println("return value is" + (String)obj);
System.out.println("around after");
}
//异常通知
@AfterThrowing(value="execution(* com.testSpring.AOP.Dao.UserDao.query(..))",throwing="ex")
public static void throwEx(Throwable ex) {
System.out.println("ex :" + ex.getMessage() );
}
最终通知
@After(value="execution(* com.testSpring.AOP.Dao.UserDao.query(..))")
public static void finallyRun() {
System.out.println("最终通知");
}