1. Aspect
Aspect是对系统中的横切关注点(比如事务管理)逻辑进行模块化封装的AOP概念实体。通常情况下,Aspect包含多个Pointcut以及相关Advice定义。
2. Joinpoint
在系统运行之前,AOP的功能模块都需要织入到OOP的功能模块中。要进行这种织入过程,我们需要知道在系统的哪些执行点上进行织入操作,这些将要在其之上进行织入操作的系统执行点就称为Joinpoint。
3. Pointcut
Pointcut代表的是一组Joinpoint的表述方式,并将Joinpoint和Advice联系在一起。
4. Advice
Advice是单一横切关注点的载体,它代表将会织入到Joinpoint的横切逻辑。如果将Aspect比作OOP中的class,那么Advice就相当于Class中的Method。
5. Weaver
只有经过织入过程,以Aspect模块化的横切关注点才会集成到OOP的现存系统中,而完成织入过程的那个“人”就称为Weaver。比如AspectJ就有专门的编译器来完成织入操作。
AOP是 一种理念,要实现这种理念通常需要一种现实的方式。与OOP需要相应的语言支持一样,AOP也需要某种语言以帮助实现相应的概念实体。统称这些语言为AOL,即Aspect-Oriented Language.
AOL可以跟系统语言相同或不同,比如AspectJ使用的就是AspectJ语言,Spring AOP使用的是java语言。
AOP类似于OOP,Aspect类似于Class