Pointcut 介绍
Pointcut,切入点,它的作用是去描述匹配AOP的另一个概念join point,它描述joint point 所在的包,包中类执行的方法等。通过它,Spring Aop 就找到了join point 的位置,进而可以对join point 进行各种advice,比如 before advice,after advice,after returning advice 等。
Pointcut 组成
Pointcut 包含两个部分。第一部分为对join point 的描述,第二部分为自己的名字。如下
@Pointcut("execution(public * com.example.*.*(..))") //这部分是描述
public void dataAccess(){ // 这部分是名字
}
Pointcut 的指示符
Pointcut 有如下的指示符
execution:表示匹配方法的执行join point。这个是Spring Aop 里面最重要的指示符。
within:现在匹配within所描述的类型下面的所有方法的join point。
this:限制匹配joint point 是this 所指定的类型的join point.
target:限制匹配join point 是target 所指定的类型的join point.
args:限制匹配join point 的参数是 args 所指定的类型。
@args:限制匹配joint point 的所传参数含@args指定的注解。
@target:限制匹配join point 的实例含@target指定的注解。
execution 指示符的具体描述
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
modifiers-pattern? 访问权限 比如: public , private, 等 可选。
ret-type-pattern:返回值类型, 必须 ,可以用 * 标识任意。
declaring-type-pattern?:可选 必须
name-pattern:全类路径名 必须 ()参数为空 (..)任意参数 (*)任意的一个参数 (*.String) 第一个参数任意,第二个参数为string 类型。
param-pattern:参数列表 必须
throws-pattern?:异常,可选