AOP--面向方面语言--结点与切点--

本文介绍了AOP中的关键概念——结点与切点。结点是符合特定特征的代码语句,如方法定义或调用;切点则是结点的集合,用于定位特定条件的代码段。AOP通过定义如execution、call等谓词来描述代码特征,例如execution(* *(…))表示匹配任何方法的运行,call(* set(…))匹配所有名为set的方法调用。文章还讨论了call与execution的区别,前者关注调用点,后者关注实际运行时刻。
摘要由CSDN通过智能技术生成

结点:定义符合指定特征的代码语句。可以是一个方法定义或者调用,也可以是变量的定义或者运算。

切点:是结点的集合。用不同的结点描述符合特定条件的代码段。面向方面语言(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,结点、切点的定义可以使用通配符。"*"代表任意字符(组成方法名, 类型名等) ; "…"代表任意长度的函数参数列表.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值