• Spring框架学习05——AOP相关术语详解


    1、Spring AOP 的基本概述

    AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视、事务管理、安全检查、缓存)。Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。

    2、AOP的相关术语

    在Spring AOP 框架中涉及以下常用术语:

    • 连接点(Joinpoint):是指程序运行中的一些时间点,即那些被拦截到的点,例如方法的调用或异常的抛出;
    • 切入点(Pointcut):是指需要处理的连接点,所有的方法执行都是连接点,而切入点是一个描述信息,它修饰的是连接点,通过切入点确定哪些连接点需要被处理;
    • 切面(Aspect):是指封装横向切到系统功能的类(例如事务处理),是切入点和通知的结合;
    • 通知(Advice):也被称为增强,是由切面添加到特定的连接点的一段代码,简单来说,通知就是指拦截到的连接点之后所要做的事情,因此通知是切面的具体实现;通知分为前置通知、后置通知、异常通知、最终通知、环绕通知;
    • 引介(Introduction):也被称为引入,允许在现有的实现类中添加自定义的方法和属性;
    • 目标对象(Target Object):是指被通知的对象,即代理的目标对象;
    • 织入(Weaving):是将切面代码插入到目标对象上,从而生成代理对象的过程;
    • 代理(Proxy):是通知应用到目标对象之后被动态创建的对象;

    3、AOP术语详解

    创建dao包,并创建StuDao接口和接口实现类StuDaoImpl,代码示例如下:
    StuDaoImpl实现类

    public class StuDaoImpl implements StuDao {
        @Override
        public void add(Stu stu) {
            System.out.println("添加学生");
        }
    
        @Override
        public void find() {
            System.out.println("查询学生");
        }
    
        @Override
        public void update(Stu stu) {
            System.out.println("修改学生");
        }
    
        @Override
        public void delete(Stu stu) {
            System.out.println("删除学生");
        }
    }

    参考以上代码,其中:

    • Joinpoint(连接点)是指可以被拦截到的点,实现类中的增删改查这些方法都可以被增强,这些方法称为连接点;
    • Pointcut(切入点)是指真正被拦截到的点,如果只想对add()方法进行增强(例如做数据校验),add()方法就是切入点;
    • Advice(通知)是指拦截后要做的事情,也叫增强,如果对add()方法进行数据校验,数据校验的方法就是通知;
    • Target(目标对象)是指被增强的对象,实现类StuDaoImpl就是目标对象;
    • Weaving(织入)是指将通知应用到目标对象的过程,将数据校验应用到StuDaoImpl的add()方法的过程,就是织入;
    • Proxy(代理)是指被应用了增强后,产生一个代理对象;
    • Aspect(切面)是指切入点和通知的组合;
  • 相关阅读:
    程序设计与算法(一)第3周测验(2020春季)
    程序设计与算法(一)第2周测验(2020春季)
    量化投资_波动和趋势能量比(传统盘整和趋势的量化表示)
    Matlab高级教程_第四篇:白噪声的MATALB生成方式
    数学之美_马尔科夫模型01
    Matlab高级教程_第四篇:Matlab高级函数_关键词:arrayfun
    Matlab高级教程_第四篇:Matlab高级函数_关键词:drawnow,addpoints,animatedline,getpoints
    Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
    Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题
    数学是什么?_基变换(线性代数)
  • 原文地址:https://www.cnblogs.com/jpwz/p/10567316.html
Copyright © 2020-2023  润新知