手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

Pointcut的学习(三)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

根据连接点的所属,Pointcut有以下几种类型:

Method execution execution(MethodSignature)

Method Call call(MethodSignature)

Method execution捕捉的连接点是在被执行的函数体,而Method call捕捉的连接点是在调用符合MethodSignature的函数的代码处。

如:

public pointcut MethodExecutor():execution(* Shape .draw(..));

before():MethodExecutor(){

Signature sig = thisJoinPointStaticPart.getSignature();

logger.logp(Level.INFO, sig.getDeclaringType().getName(),

sig.getName(), "method execution");

}

捕捉的是在Circle.draw()执行前的连接点

public class Circle implements Shape{

public void draw(){

logger.logp(Level.INFO, "circle", "draw", "drawing a circle");

}

}

public pointcut MethodCall():call(* Shape .draw());

before():MethodCall(){

Signature sig = thisJoinPointStaticPart.getSignature();

logger.logp(Level.INFO, sig.getDeclaringType().getName(),

sig.getName(), "method call ");

}

捕捉的是调用Circle.draw()之前的代码

Circle clr = new Circle();

clr.draw();

两者的功能基本一致。

上面的代码运行的结果如下:

2005-7-14 22:14:36 com.aia.ch03.Circle draw

信息

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!