Spring AOP
作者:互联网
1. AOP
- AOP:面向切面(方面)编程,通俗的理解就是:扩展功能不通过修改源代码实现
- AOP:采用横向抽取机制,取代了传统 纵向 继成体系 重用代码(性能监视,事务管理,安全检查,缓存)
2. AOP实现机制 – 代理机制:
- Spring 的 AOP 的底层用到两种代理机制:
- JDK 的动态代理 :针对实现了接口的类产生代理.
- Cglib 的动态代理 :针对没有实现接口的类产生代理. 应用的是底层的字节码增强的技术 生成当前类
的子类对象.
3. AOP的相关概念
-
PointCut(切入点)
切入点实际上是用来定义横切逻辑规则的组件;
所谓切入点是指我们要对哪些Joinpoint进行拦截的定义;
【糯米藕】切藕的规则:距藕节3~4cm; -
Target(目标对象)
代理的目标对象 (要增强的类)
根据切入点(pointcut)的规则,找出来的需要被增强的类 / 对象。
【糯米藕】根据切藕的规则,找出来的符号条件的藕; -
JoinPoint(连接点)
所谓连接点是指那些被拦截到的点,在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点。
连接点是根据切入点(pointcut)的规则,在目标对象(Target)上要进行切面的那个位置,代码中体现为一个特定的方法;
【糯米藕】具体的一节藕上,下刀的位置; -
Advice(通知/增强)
所谓通知是指拦截到连接点之后所要做的事情就是通知;
通知分为前置通知,后置通知,异常通知,最终通知,环绕通知 (切面要完成的任务)
通知(Advice)可以看做是添加到目标对象(Target)上的新的功能;
通知体现为类的方法;
【糯米藕】米; -
Aspect(切面)
切面(Aspect)是切入点和通知(引介)的结合
代码中的切面是一个理解性的概念;
【糯米藕】在藕上下刀,形成的横截面; -
Introduction(引介)
引介是一种特殊的通知(Advice),在不修改类的代码的前提下,Introduction可以在运行期间为类动态添加一些方法或者Field
-
Weaving(织入)
把增强的应用到目标过程。【把advice应用到target的过程】
织入在开发过程中,需要进行xml或注解配置;
【糯米藕】在藕上下刀,把米灌入藕的全过程; -
Proxy(代理)
一个类被AOP织入增强后,就产生一个结果代理类
【糯米藕】糯米藕;
标签:Spring,切入点,AOP,代理,切面,通知,糯米 来源: https://blog.csdn.net/Spectre_win/article/details/89556435