AOP相关概念总结
-
AOP常见的使用场景有权限检查,记录日志.事务管理
-
AOP是一种编程思想,是对OOP的补充,可以进一步提高编程的效率
-
Pointcut
:用来定义当前的横切逻辑准备织入到哪些连接点上 -
Advice
:用来定义横切逻辑,即在连接点上准备织入什么样的逻辑 -
Aspct
:是一个用来封装切点和通知的组件 -
Jointpoint
:指目标对象上将要被织入的方法 -
织入
织入,就是将方面组件的横切逻辑,织入到目标对象的连接点的过程
- 可以在运行时织入,需要为目标对象生成代理对象
- 可以在类装载时织入,需要使用特殊的类装载器
- 可以在编译时织入,需要使用特殊的编译器
-
AspectJ
在编译器织入代码,他有一个专门的编译器,用来生成遵守Java字节码规范的class文件 -
SpringAOP使用纯Java实现,它不需要专门的编译器,也不需要特殊的类加载器
-
SpringAOP
在运行时通过代理的方式织入代码,仅仅支持织入在方法上的连接点
-
JDK
动态代理,时Java提供的代理技术,可以在**运行时**创建接口的代理实例 -
SpringAOP默认采用JDK动态代理,在接口的代理实例中织入代码
-
CGLib动态代理
,采用底层的字节码技术,在运行时创建子类代理对象