Pointcut的学习(一)

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

Pointcut: 在程序中捕捉或者标识连接点(joint point)的,捕捉到连接点后,可以在连接点执行的前面或者后面设置一些规则。

在AspectJ中,Pointcut可以是匿名的也可以是命名的。匿名的pointcut附着在使用它们的地方,如一个Advice或者另一个pointcut的定义中。

如:

before():execution(* *.*(..)){

}

红字部分就是一个匿名的pointcut。

public

pointcut logNew():execution(*.new())&& !within(Log);

一个名字为logNew的pointcut.

Pointcut由几个部分组成:访问限制 pointcut关键字 名称(): 类型关键字

信号(signature);

如上面的命名pointcut,public是一个访问限制;pointcut是一个关键字,表明这是一个pointcut;logNew()是一个名称(pointcut)的名称;execution是pointcut的类型;(*.new())&&

!within(Log);是一个signature,跟类型关键字联合起来,说明这是一个捕捉除了在Log方面的其它类的构造函数的执行的一个pointcut。

通配符与Pointcut操作符:

AspectJ支持三种通配符

* 任意长度的字符

如 Account* 表示用Account开头的字符串

.. 任意长度的字符,或任意层

account..*

任意包account的子包或者类型。

+ 一个给定的类型的任意子类或者子接口。

Account+

任意Account的子类或者子接口。

AspectJ支持一元操作符“!”和二元操作符“&&”、“||”。

!,用来将某些特定的类型pointcut排除在捕捉的连接点之外;

&&,捕捉的连接点必须满足两个pointcut;

||,捕捉的连接点只要满足两个pointcut之一即可。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航