1:Pointcut
在介绍Pointcut之前,有必要先介绍 Join Point(连接点)概念。
连接点:程序运行中的某个阶段点,比如方法的调用、异常的抛出等。比如方法doSome();
Pointcut是JoinPoint的集合,它是程序中需要注入Advice 的位置的集合,指明Advice要在什么样的条件下才能被触发。
org.springframework.aop.pointcut接口用来指定到特定的类和方法,
package org.springframework.aop;
public interface Pointcut {
//获取类过滤器 用来将切入点限定在给定的目标类中
ClassFilter getClassFilter();
//获取匹配切入点的方法 用来判断切入点是否匹配目标类的给定的方法
MethodMatcher getMethodMatcher();
//总匹配的标准切入点实例
Pointcut TRUE = TruePointcut.INSTANCE;
}
在Pointcut接口中主要有两个接口:ClassMatcher和MethodMatcer,有利于代码的重用。
2:Advice
它是某个连接点所采用的处理逻辑,也就是向连接点注入的代码。例如:输出的日志信息 就是一个Advice
Advice通知是AOP联盟定义的一个接口,定义当拦截到连接点做相应的处理操作,为切面增强提供织入接口。在spring AOP中,通知主要描述Spring AOP围绕方法调用而注入切面的行为,Spring AOP的通知扩展了AOP联盟的通知接口,提供了前置通知BeforeAdvice、后置通知AfterReturningAdvice、最终通知AfterAdvice和例外通知ThrowsAdvice等。
3:Advisor
Advisor是Pointcut和Advice的配置器,它包括Pointcut和Advice,是将Advice注入程序中Pointcut位置的代码
当完成对目标对象方法的增强行为操作(Advice)和切入点Point的设计开发之后,需要一个对象将目标对象、增强行为和切入点三者结合起来,通知器Advisor就是一个实现这个功能的对象,即通过Advisor通知器,可以定义那些目标对象的那些方法在什么地方使用这些增加的行为。