Spring AOP 基本概念

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)

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容