AOP相关术语
一、常用增强处理类型
增强处理(Advice):
- 前置增强
- 后置增强
- 环绕增强
- 异常抛出增强
- 最终增强等类型
二、Spring AOP配置元素
三、前置增强和后置增强
目标方法
增强处理
定义切入点
切入点:简单的说,就是连接点的查询条件
织入增强处理
织入:在切入点插入增强处理
四、异常抛出增强
异常抛出增强的特点:
- 在目标方法抛出异常时织入增强处理
- 可拔插的异常处理方案
<aop:after-throwing>元素:定义异常抛出增强
五、最终增强
最终增强的特点:
- 无论方法是否抛出异常,都会在目标方法最后织入增强处理,即:该增强都会得到执行
- 类似于异常处理机制中finally块的作用,一般用于释放资源
- 可以为各功能模块提供统一的,可拔插的处理方案
<aop:after>元素:定义最终增强
六、环绕增强
环绕增强的特点:
- 目标方法前后都可织入增强处理
- 功能最强大的增强处理
- 可获取或修改目标方法的参数、返回值,可对它进行异常处理,甚至可以决定目标方法是否执行
<aop:around>元素:定义环绕增强
/环绕增强
//目标方法前后都可织入增强处理
//功能最强大的增强处理
//可获取或修改目标方法的参数,返回值,可对他进行异常处理,甚至可以决定目标方法是否执行。
public Object aroundLogger(ProceedingJoinPoint jp) throws Throwable {
log.info("环绕增强:调用" + jp.getTarget() + "的" + jp.getSignature().getName()
+ "方法。方法入参:" + Arrays.toString(jp.getArgs()));
try {
Object result = jp.proceed();
log.info("环绕增强:调用" + jp.getTarget() + "的"
+ jp.getSignature().getName() + "方法。方法返回值:" + result);
return result;
} catch (Throwable e) {
log.error("环绕增强:"+jp.getSignature().getName() + "方法发生异常:" + e);
throw e;
} finally {
log.info("环绕增强:"+jp.getSignature().getName() + "方法结束执行。");
}
}
七、总结
环绕增强允许在目标类方法调用前后织入横切逻辑,它综合实现了前置,后置增强两者的功能.
八、个人心得
做任何事情都想做到最好,做人群中最耀眼的那一颗星