Spring常用增强处理类型

AOP相关术语

 一、常用增强处理类型

增强处理(Advice):

  1. 前置增强
  2. 后置增强
  3. 环绕增强
  4. 异常抛出增强
  5. 最终增强等类型

 

二、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() + "方法结束执行。");
    }
}

七、总结

环绕增强允许在目标类方法调用前后织入横切逻辑,它综合实现了前置,后置增强两者的功能.

八、个人心得

做任何事情都想做到最好,做人群中最耀眼的那一颗星
原文地址:https://www.cnblogs.com/www-tty-com/p/14029101.html