• AOP相关概念


    AOP概念

    面向切面编程(Aspect Oriented programming),讲很多业务都要使用的功能进行抽取出来单独实现,在运行业务的时候,再动态的植入这些抽取的代码(将共性业务和核心业务分离)

    例子:
    1 、身份验证(登录)
    2、权限验证
    3、转账
    4、历史交易记录
    1,2,4三个功能是公共的功能,抽取出来,单独使用,将公共业务和核心业务进行分离。

    AOP是一种思想,与具体的技术无关

    优点:
    (1)、实现共性功能和和核心功能的解耦
    (2)、提高共性功能的代码的复用率
    (3)、 业务功能拓展更便捷

    Aop

    底层原理:动态代理

    1、动态代理:实现了代理模式。再Spring中实现动态代理的方式:
    (1)、JDK的动态代理
    (a)、动态代理类需要实现InvocationHandler接口
    (b)、被代理的类需要实现相应的接口
    缺陷:不能直接代理Java类,必须实现某个接口的类 (2)、CGLIB动态代理
    (a)、代理类需要实现MethodInterceptor接口,重写该接口的interceptor方法
    优点:被代理的类不需要实现接口,但是不能是final修饰的类
    2、AOP和OOP之间的关系
    (1)、AOP是OOP的一个有效补充和完善
    (a)、OOP的抽象是一种纵向的抽象
    (b)、AOP的抽象是一种横向的抽象
    (2)、AOP相关的概念
    a、切面(Aspect):是类,是对横切关注点的抽象 (通知和切入点的结合)
    b、连接点(JoinPoint):程序执行过程中某个特定的点(某个特定的点执行方法)。SpringAop中一个连接点表示一个方法的执行
    c、切入点(Pointcut):匹配连接点的拦截规则,AOP的核心,什么时候把横切关注点切进来。
    d、通知/增强(Advice):切面上拦截到某个特定的连接点之后执行的某个动作
    e、目标对象(target object):被一个或者多个切面所通知的对象,即业务中需要进行增强的业户对象
    f、织入(Weaving):把切面作用到目标对象上产生一个代理对象上
    g、引入(Introduction):在运行时给一个类生命额外的方法或者属性,不需要为类实现一个接口就能使用接口中的方法
    h、横切关注点:是一个类,公共的业务

  • 相关阅读:
    使用patch-package保存node_modules包修改
    C++二分查找算法:数组中占绝大多数的元素
    学node 之前你要知道这些
    BUUCTF学习(7): 随便注,固网杯
    【面试题】https协议
    OpenAI CEO被董事会开除:内情如何
    【精讲】vue框架 路由守卫(前后置)等
    Android make 如何通过编译预置文件到系统
    redis的原理和源码-sentinel哨兵的原理和源码解析(下)
    解锁 OpenAI 密钥的新利器:OpenAI Key 有效性查询工具,支持GPT4
  • 原文地址:https://blog.csdn.net/weixin_45511599/article/details/126281796