AspectJ 支持 5 种类型的通知注解:
- @Before: 前置通知, 在方法执行之前执行
- @After: 后置通知, 在方法执行之后执行,不管是否正常结束都会执行。无法访问返回值。
- @AfterRunning: 返回通知, 在方法返回结果之后执行,正常结束才会执行。能够访问到返回值。
- @AfterThrowing: 异常通知, 在方法抛出异常之后
- @Around: 环绕通知, 围绕着方法执行
返回通知
使用@AfterRunning注解, 方法正常执行完后调用,如果有异常,则不调用 可以访问到方法的返回值
异常通知
使用@AfterThrowing注解, 在方法抛出异常之后,并且和指定的异常相同或者是其父类可以执行。
如:入参为NullPointException ex,那么只有在发生空指针异常时才执行
@AfterThrowing(value="execution(* com.spring.aop.*.*(..))",throwing="ex")
public void afterThrowing(JoinPoint joinPoint,Exception ex){
//方法