1、通知类型
* @Before --- 前置通知
* @AfterReturning --- 后置通知
* @Around --- 环绕通知(目标对象默认不执行,需要手动执行)
* @After --- 最终通知
* @AfterThrowing --- 异常抛出通知
2、配置通用的切入点
* 使用 @Pointcut 定义通用的切入点
/**
* 自定义切入点
*/
@Pointcut(value="execution(public * com.jadan.demo1.CustomerDaoImpl.save())")
public void fn() {}
最终通知:
/**
* 注解方式的切面类
*/
@Aspect
public class MyAspectAnno {
/**
* 自定义切入点
*/
@Pointcut(value="execution(public * com.jadan.demo1.CustomerDaoImpl.save())")
public void fn() {}
/**
* 最终通知:方法执行成功或者出现异常,都会执行
*/
@After(value="MyAspectAnno.fn()")
public void after() {
System.out.println("最终通知...");
}
}
环绕通知:
/**
* 注解方式的切面类
*/
@Aspect
public class MyAspectAnno {
/**
* 自定义切入点
*/
@Pointcut(value="execution(public * com.jadan.demo1.CustomerDaoImpl.save())")
public void fn() {}
/**
* 环绕通知
*/
@Around(value="MyAspectAnno.fn()")
public void around(ProceedingJoinPoint joinPoint) {
System.out.println("环绕通知Start...");
try {
// 让目标对象的方法执行,因为默认环绕通知是不执行目标方法的
joinPoint.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("环绕通知End...");
}
}