AOP--PointCut

Ref :http://blog.csdn.net/kjfcpua/article/details/7513273 切入点指示符用来指示切入点表达式目的.

格式:修饰符 包名 类 方法 参数。

1. 指示符

  • execution:用于匹配方法执行的连接点;

2. 类型匹配语法

  • * 匹配任何字符
  • .. 匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。
  • +:匹配指定类型的子类型;仅能作为后缀放在类型模式后边。

    AspectJ使用 且(&&)、或(||)、非(!)来组合切入点表达式。

3. 示例

# 任何公共方法的执行
public * *(..)

# cn.javass包及所有子包下IPointcutService接口中的任何无参方法
* cn.javass..IPointcutService.*()

# cn.javass包及所有子包下任何类的任何方法
* cn.javass..*.*(..)

# cn.javass包及所有子包下IPointcutService接口的任何只有一个参数方法
* cn.javass..IPointcutService.*(*)

# 非“cn.javass包及所有子包下IPointcutService接口及子类型”的任何方法
* (!cn.javass..IPointcutService+).*(..)

# cn.javass包及所有子包下IPointcutService接口及子类型的的任何无参方法
* cn.javass..IPointcutService+.*()

# cn.javass包及所有子包下IPointcut前缀类型的的以test开头的只有一个参数类型为java.util.Date的方法,
# 注意该匹配是根据方法签名的参数类型进行匹配的,而不是根据执行时传入的参数类型决定的
# 如定义方法:public void test(Object obj);即使执行时传入java.util.Date,也不会匹配的;
* cn.javass..IPointcut*.test*(Java.util.Date)

# cn.javass包及所有子包下IPointcut前缀类型的的任何方法,且抛出IllegalArgumentException和ArrayIndexOutOfBoundsException异常
* cn.javass..IPointcut*.test*(..)  throws
 IllegalArgumentException, ArrayIndexOutOfBoundsException

# 任何实现了cn.javass包及所有子包下IPointcutService接口和java.io.Serializable接口的类型的任何方法
* (cn.javass..IPointcutService+
&& java.io.Serializable+).*(..)

# 任何持有@java.lang.Deprecated注解的方法
@java.lang.Deprecated * *(..)

# 任何持有@java.lang.Deprecated和@cn.javass..Secure注解的方法
@java.lang.Deprecated @cn.javass..Secure  * *(..)

results matching ""

    No results matching ""