AOP 是如何工作的
跳到导航
跳到搜索
AOP 是什么
AOP 就是 Aspect Oriented Programing,面向切面编程,是一种非常适合在无需修改业务代码的前提下,
对某个或某些业务增加统一的功能,比如日志记录、权限控制、事务管理等,能很好的使得代码解耦,提高开发效率。
AOP 中的核心概念
Advice
Advice 可以理解为通知、建议,在 Spring 中通过定义 Advice 来定义代理逻辑。
Pointcut
Pointcut 是切点,表示 Advice 对应的代理逻辑应用在哪个类、哪个方法上。
Advisor
Advisor 等于 Advice+Pointcut,表示代理逻辑和切点的一个整体,程序员可以通过定义或封装一个 Advisor,来定义切点和代理逻辑。
Weaving
weaving 表示织入,将 Advice 代理逻辑在源代码级别嵌入到切点的过程,就叫做织入。
Target
Target 表示目标对象,也就是被代理对象,在 AOP 生成的代理对象中会持有目标对象。
Join Point
Join Point 表示连接点,在 Spring AOP 中,就是方法的执行点。
AOP 的工作原理
AOP 是发生在 Bean 的生命周期过程中的:
1、Spring 生成 bean 对象时,先实例化出来一个对象,也就是 target 对象
2、再对 target 对象进行属性填充
3、在初始化后步骤中,会判断 target 对象有没有对应的切面
4、如果有切面,就表示当前 target 对象需要进行 AOP
5、通过 CGlib 或 JDK 动态代理机制生成一个代理对象,作为最终的 bean 对象
6、代理对象中有一个 target 属性指向了 target 对象