1. 前置通知
@Component
@Aspect
public class MyAdvice
{
@Pointcut("excution(void com.feiyan.BookDao.update())")
private void pt()
{
}
@Before("pt()")
public void insert()
{
}
}
2. 后置通知
@Component
@Aspect
public class MyAdvice
{
@Pointcut("excution(void com.feiyan.BookDao.update())")
private void pt()
{
}
@After("pt()")
public void insert()
{
}
}
3. 环绕通知 注:需要在插入的方法里调用原方法的执行,并且要抛出异常,还需要在环绕通知方法里添加返回值
@Component
@Aspect
public class MyAdvice
{
@Pointcut("excution(void com.feiyan.BookDao.update())")
private void pt()
{
}
@Around("pt()")
public Object insert(ProceedingJoinPoint pjp) throws Throwable
{
System.println("111111");
Objcet ret = pjp.proceed();
System.println("22222");
return ret;
}
}
4. 返回后通知 注:和后置通知的区别,后置通知一定会执行,此通知必须是原方法完整执行完后才会执行
@Component
@Aspect
public class MyAdvice
{
@Pointcut("excution(void com.feiyan.BookDao.update())")
private void pt()
{
}
@AfterReturning("pt()")
public void insert()
{
}
}
5. 抛出异常后通知
@Component
@Aspect
public class MyAdvice
{
@Pointcut("excution(void com.feiyan.BookDao.update())")
private void pt()
{
}
@AfterThrowing("pt()")
public void insert()
{
}
}