AOP的专业术语
1.连接点(Joinpoint)
特定点是程序执行的某个特定位置,如类开始初始化前、类初始化后、类的某个方法调用前/后、方法抛出异常后。一个类或者一段程序代码拥有一些具有边界性质的特定点,这些特定点就称为 ”连接点“ 。
Spring 仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛出异常时、方法调用前后这些程序点织入增强。
2.切点(Pointcut)
每个程序类都有多个连接点,如一个类拥有两个方法,这两个方法都是连接点。而在众多个连接点中,如何定位某些感兴趣的连接点呢? AOP 就是用过 “切点” 定位特定连接点。
打个比方,连接点相当于数据库中的记录,而切点就相当于的查询条件;一个切点可以匹配多个连接点。
在 Spring 中,切点通过 org.springframework.aop.Pontcut 接口进行扫描,使用类和方法作为连接点的查询条件。
3.增强(Advice)
增强是织入目标类连接点上的一段程序代码。也就是在切点上增加的业务逻辑代码。
4.目标对象(Target)
增强逻辑的织入目标类。
5.引介(Introduction)
引介是一种特殊的增强,它为类添加一些属性和方法。
6.织入(Weaving)
织入是将增强添加到目标类的具体连接点上的过程。
7.代理(Proxy)
一个类被 AOP 织入增强后,就产生了一个结果类。它是融合了原类和增强逻辑的代理类。
8.切面(Aspect)
切面由切点和增强(引介)组成,它既包括横切逻辑的定义,也包括连接点的定义。
Spring AOP 就是负责实施切面的框架,它将切面所定义的横切逻辑织入切面所指定连接点中。
AOP 的工作重心在于如何将增强应用于目标对象的连接点上。这里包括两项工作:
- 如何通过切点和增强定位到连接点上;
- 如何在增强中编写切面的代码