5.3 AOP的3个关键概念
因为AOP的概念难于理解,所以在前面首先对Java动态代理机制进行了一下讲解,从而使读者能够循序渐进地来理解AOP的思想。
学习AOP,关键在于理解AOP的思想,能够使用AOP。对于AOP众多的概念,读者只要理解3个重要的概念即可。这3个概念是Pointcut、Advice和Advisor。
5.3.1 切入点(Pointcut)
在介绍Pointcut前,有必要先介绍一下 Join Point(连接点)的概念。Join Point指的是程序运行中的某个阶段点,如某个方法调用、异常抛出等。前面示例中的doAuditing()方法就是一个Join Point,表示程序是要在这个地方加入Advice。
Pointcut是Join Point的集合,它是程序中需要注入Advice的位置的集合,指明Advice要在什么样的条件下才能被触发。
org.springframework.aop.Pointcut 接口用来指定通知到特定的类和方法。查看Spring下载包里的源文件Pointcut.java,路径是spring-framework-2.0-m1\src\org\springframework\aop,可以看到Pointcut.java.源代码如下:
//******* Pointcut.java**************
package org.springframework.aop;
public interface Pointcut {
//用来将切入点限定在给定的目标类中
ClassFilter getClassFilter();
//用来判断切入点是否匹配目标类给定的方法
MethodMatcher getMethodMatcher();
Pointcut TRUE = TruePointcut.INSTANCE;
}
代码说明:
● 接口ClassFilter,用来将切入点限定在给定的目标类中。
● 接口MethodMatcher,用来判断切入点是否匹配目标类给定的方法。
从上面可以看出,在接口Pointcut中,主要包含两个接口:ClassFilter和MethodMatcher,有利于代码的重用。
5.3.2 通知(Advice)
Advice是某个连接点所采用的处理逻辑,也就是向连接点注入的代码。前面示例中提取出来输出日志信息的代码就是一个Advice,表示要在Join Point加入这段代码。
5.3.3 Advisor
Advisor是Pointcut和Advice的配置器,它包括Pointcut和Advice,是将Advice注入程序中Pointcut位置的代码。
上面只是粗略地对AOP的3个概念进行一下说明,目的是让读者能够较快地进入到AOP中,接下来将会分别对这3个概念进行更加详细的讲解。