AOP的通知类型共五种:
- 前置通知:原始方法执行前执行,如果通知中抛出异常,组织原始方法运行
- 应用:数据校验
- 后置通知:原始方法执行后执行,无论原始方法中是否抛出异常,都将执行通知
- 应用:现场清理
- 返回后通知:原始方法正常执行完毕并返回结果后执行,如果原始方法抛出异常,无法执行
- 应用:返回值相关数据处理
- 抛出异常后通知:原始方法抛出异常后执行,如果原始方法没有抛出异常,无法执行
- 应用:对原始方法中出现的异常信息进行处理
- 环绕通知:在原始方法执行前后均有对应执行执行,还可以阻止原始方法的执行
- 应用:十分强大,可以做任何事
<aop:config><aop:pointcut id="pt" expression="execution(* *..*(..))"/><aop:aspect ref="myAdvice">在原始方法前<aop:before method="before" pointcut-ref="pt"/>在原始方法后<aop:after method="after" pointcut-ref="pt"/>在原始返回之后<aop:after-returning metheturning method="afterReturing" pointcut-ref="pt"/>在原始方法报错<aop:after-throwing method="afterThrowing" pointcut-ref="pt"/>环绕通知<aop:around method="around" pointcut-ref="pt"/></aop:aspect></aop:config>
环绕通知使用:
public void around(ProceedingJoinPoint pjp) throws Throwable{System.out.println("around before");// 对原始方法的调用pjp.proceed();System.out.println("around after");}
必须对原始方法进行调用,使用形参ProceedingJoinPoint,pjp.proceed();调用原始方法,否则原始方法不执行
