1、连接点(Joinpoint)
具有某些特定性质的程序在执行过程中的位置,比如:类开始初始化前、类初始化后、类中方法执行前/后,类中方法抛出异常时等等。在Spring中,通俗的讲就是类中的方法执行前、方法执行后、方法抛出异常时以及方法调用前后的这些程序执行点织入增强。因为Spring仅支持方法作为连接点。
连接点如何确定?具有哪两个性质?  性质:执行点  方位
1、方法表示的程序执行点;
2、用相对位置表示的方位;
ex:在Test.foo()方法执行前的链接点,执行点是Test.foo(),方位是该方法执行前的位置。
Spring如何对执行点进行定位?如何定义方位?
1、Spring通过使用切点对执行点进行定位。
2、在增强类型中定义方位。
2、切点(Pointcut)
用数据库查询来说 切点是查询条件,记录就是连接点(确切的说应该是执行点,也就是方法,因为要想定位连接点还需要方位信息)。每个类中有多个方法,也就是可以有多个连接点。Spring通过切点来定位连接点,在Spring中,切点通过org.springframework.aop.Pointcut接口,以类和方法作为连接点的查询条件。
3、增强(Advice)
作用:1、织入目标类连接点上的一段程序代码。2、拥有与连接点有关的信息即 执行点的方位。
通过结合执行点的方位信息和切点信息就可以找到特定的链接。Spring所提供的增强接口都是带方位名的,如 BeforeAdvice、AfterReturningAdvice、ThrowsAdvice等。BeforeAdvice表示方法调用之前的位置。AfterReturningAdvice表示访问返回后的位置。、
结合切点和增强,才能确定特定的连接点并实施增强逻辑。
4、目标对象(Target)
增强逻辑的织入目标类。
5、引介(Introduction)
一类特殊的增强,能够为类添加一些属性和方法。例如一个业务类没有实现某接口,通过AOP的引介功能就能够动态的为该类添加接口的实现逻辑,让业务类成为该接口的实现类。
6、织入(weaving)
织入是将增强添加到目标类的具体连接点的上的过程。AOP就像一台织布机,将目标类,增强或者介入天衣无缝的编织到一起。根据不同的实现技术:有3种织入方法:
1、编译期织入,这要求使用特殊的Java编译器。
2、类装载期织入,这要求使用特殊的类装载器。
3、动态代理织入,在运行期为目标类添加增强生成子类的方式。
Spring采用的是动态代理织入,AspectJ采用编译期织入和类装载器织入。
7、代理(Proxy)
一个类被AOP织入增强之后,就产生了一个结果类,它是融合了原类和增强逻辑的代理类,根据不同的代理方式,代理类可能是和原类具有相同接口的类,也可能就是原类的子类。所以可以采用与调用原类相同的方式调用代理类。
8、切面(Aspect)
切面的组成:由切点和增强(介入)组成。包含横切逻辑的定义,也包含者连接点的定义,Spring AOP就是负责实施切面的框架,将切面所定义的横切逻辑织入切面所指定的连接点中。
AOP的工作重心:如何将增强应用于目标对象的连接点上?
1、通过切点和增强定位到连接点上。
2、在增强中编写切面的代码。

  

版权声明:本文为zyxsblogs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zyxsblogs/p/13358565.html