zoukankan      html  css  js  c++  java
  • 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() + "方法结束执行。");
        }
    }

    七、总结

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

    八、个人心得

    做任何事情都想做到最好,做人群中最耀眼的那一颗星
  • 相关阅读:
    三、单例模式
    二、工厂模式
    一、设计模式六大原则
    十二、Spring之IOC容器初始化
    PythonWeb开发教程(二),搭建第一个django项目
    PythonWeb开发教程(一),开发之前需要准备什么
    基于python的性能测试工具–locust
    在成为测试大牛的路上,我推荐BestTest
    移动端自动化测试(一)appium环境搭建
    常用工具篇(二)死链接扫描工具–Xenu
  • 原文地址:https://www.cnblogs.com/www-tty-com/p/14029101.html
Copyright © 2011-2022 走看看