美文网首页
Spring AOP 基本概念

Spring AOP 基本概念

作者: Tinyspot | 来源:发表于2023-12-20 11:17 被阅读0次

    1. 代理

    • 正交性,线性无关

    1.1 静态代理

    • 静态代理,一个角色就要一个代理

    1.2 动态代理

    • JDK 动态代理基于接口,被代理对象必须实现接口
    • CGLIB基于类,Java 字节码

    2. AOP 概述

    • AOP 是 Aspect Oriented Programing 的简称,即面向切面编程
    • AOP 采取横向抽取机制
    • 应用场景
      • 性能监测
      • 访问控制
      • 事物管理
      • 日志记录

    横切逻辑示意图

    2.1 连接点 (Joinpoint)

    • 特定点是程序执行的某个特定位置,如类初始化前、类初始化后、方法调用前/后、防范抛异常后等。一个类或一段程序代码拥有一些具有边界性质的特定点,这些特定点被称为“连接点”
    • Spring 只支持方法类型的连接点

    2.2 切点 (Pointcut)

    • 切点,定义要拦截哪些类的哪些方法
    • 通过 @Pointcut 定义切点

    2.3 增强 (Advice)

    • 拦截到 JoinPoint 之后要做的事情

    2.4 通知器 (Advisor)

    • 连接 Advice 和 Pointcut

    2.6 引介 (Introduction)

    • 引介是一种特殊的增强,可为类添加新的属性和方法

    2.7 目标对象 (Target)

    • 增强逻辑的织入目标类

    2.8 织入 (Weaving)

    • 动态织入,Spring AOP 采用基于运行时增强的代理技术
    • 静态织入,AspectJ 采用编译期织入

    2.9 代理 (Proxy)

    • 一个类被 AOP 织入增强后,就产生了一个结果类,它是融合了原类和增强逻辑的代理类

    3. 切点 (Pointcut)

    3.1 切点类型

    • 静态方法切点 (StaticMethodMatcherPointcut)
    • 动态方法切点 (DynamicMethodMatcherPointcut)
    • 注解切点 (AnnotationMatchingPointcut)
    • 表达式切点 (ExpressionPointcut)
    • 流程切点 (ControlFlowPointcut)
    • 复合切点 (ComposablePointcut)

    相关文章

      网友评论

          本文标题:Spring AOP 基本概念

          本文链接:https://www.haomeiwen.com/subject/jybtndtx.html