切入点指示符用来指示切入点表达式目的,
1.1命名及匿名切入点
命名切入点可以被其他切入点引用,而匿名切入点是不可以的。只有@AspectJ支持命名切入点,而Scheme风格不支持命名切入点。如下所示
@AspectJ使用如下方式引用命名切入点。
@Pointcut("(execution(* com.hd123.latin..*(..)) || execution(* com.hd123.hdpos4..*(..))) &&"
+ " (@annotation(com.hd123.latin.dao.LatinTX) ||"
+ " @annotation(com.hd123.latin.dao.LatinNewTX))")
public void operCtx() {
}
@Before("operCtx() && args(..,operCtx)")
public void before(LOperateContext operCtx) throws Exception {
saveTempOperCtx(operCtx);
}
1.2类型匹配语法
*:匹配任何数量字符;..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。
+:匹配指定类型的子类型;仅能作为后缀放在类型模式后边.
匹配表达式类型
匹配类型:可使用如下方式匹配
匹配方法:使用如下方式匹配
1.3 组合切入点表达式
AsPectJ 使用且(&&)、或(||)、非(!)来组合切入点表达式。在Scheme风格下,由于在XML中使用&&需要使用转义符‘’“&;&”来代替之,因此spring asp
提供了and、or、not来替代他们
(1)execution:使用“”“execution(方法表达式)”匹配方法执行
(2)within:使用“‘within(类型表达式)’”匹配指定类型内的方法执行:
(3)args:使用args(类型参数列表)匹配当前执行的方法传入的方法传入的参数为指定类型的执行方法;注意是匹配传入的参数类型,
不是匹配方法签名参数类型;参数类型列表中的参数必须是类型全线定名,通配符不支持;args输入动态切入点,这种切入点开销非常大,非特殊情况不能用