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
暂无评论内容