AOP通知类型
-
AOP通知描述了抽取的共性功能,根据共性功能抽取的位置不同,最终运行代码时要将其加入到合理的位置
-
AOP通知共分为5种类型
- 前置通知
- 后置通知
- 环绕通知(重点)
- 返回后通知(了解)
- 抛出异常后通知(了解)
public interface BookDao{
public void update();
public int select();
}
@Aspect
public class MyAdvice{
@Pointcut("execution(void com.xxx.dao.BookDao.update())")
private void pt(){}
@Pointcut("execution(int com.xxx.dao.BookDao.select())")
private void pt2(){}
@Before("pt()")
public void before(){
System.out.println("before advice ...");
}
@After("pt()")
public void after(){
System.out.println("after advice ...");
}
@Around("pt()")
public void around(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("around before advice ...");
// 表示对原始操作的调用
pjp.proceed();
System.out.println("around after advice ...");
}
@Around("pt2()")
public Object around(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("around before advice ...");
// 表示对原始操作的调用
Object ret = pjp.proceed();
System.out.println("around after advice ...");
return ret;
}
@AfterReturning("pt2()")
public void afterReturning(){
System.out.println("afterReturning advice ...");
}
@AfterThrowing("pt2()")
public void afterThrowing(){
System.out.println("afterThrowing advice ...");
}
}
