结点:定义符合指定特征的代码语句。可以是一个方法定义或者调用,也可以是变量的定义或者运算。
切点:是结点的集合。用不同的结点描述符合特定条件的代码段。面向方面语言(AOP)用这些特征作为限定条件,从而定位到符合限定的代码,以便于在这些代码上进行操作。
AOP定义了以下谓词描述程序代码段的特征(描述的代码以java为例)。参考:http://www.eclipse.org/aspectj/doc/released/progguide/language-joinPoints.html
execution(void Point.setX(int)) : 执行方法Point.set(int)
call(void Point.setX(int)):调用方法;
handler(ArrayOutOfBoundsException):调用特定类型的异常;
this(SomeType): 当前运行的对象是SomeType ;
target(SomeType): 目标对象类型是SomeType ; ?
within(MyClass): 运行的代码在MyClass类型定义中;
cflow(call(void Test.main())) : 结点表征的程序语句在Test.main方法的控制流中出现。
ps:
1,结点可以使用或(or)与(||)非(!)来进行组合。
2,结点、切点的定义可以使用通配符。"*"代表任意字符(组成方法名, 类型名等) ; "…"代表任意长度的函数参数列表.