本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7571698
建立时间:2006年5月29日




[AOP]AspectJ学习笔记(二)
软件技术

lhwork 发表于 2006/9/25 14:26:16

前面讲过一个关于AspectJ的例子,其实不用这么麻烦,现在可以在他的官方网站下载最新的JAR包,直接安装就可以了,安装完成以后有两个地方海上是需要设置一下1.PATH里面加上${AspectJ HOME}\BIN2.CLASSPATH里面加上${AspectJ HOME}\LIB这样环境就OK了,很简单把!下面就实现一个经典的HELLO WORLD!例子:class Test {  public void helloWorld() {    System.out.println("Hello World");  }  public static void main(String args[]) {    Test test = new Test();    test.helloWorld();  }}这个是个纯JAVA文件,没有什么好说的,下面看看ASPECTpublic aspect TestAspect {  pointcut outputLog() : call(public void helloWorld());  before() : outputLog() {    System.out.println("Before Call");  }}下面我简单的讲一下上面语句的意思:call(public void helloWorld());中的public void helloWorld()在AOP中间叫做JOIN POINT就是宿主语言的一个方法,也叫观察点,编写任何一个ASPECT程序都要先在宿主语言中找好这个观察点,简单的说就是主程序的功能,也就是你要 监视的切入点,CALL叫做指示符,有点想关键字,其意思是监测方法的执行,和他意思差不多的有个叫做EXECUTION的,其差别在与:CALL:只要调用其监视的方法,改POINTCUT就起作用EXECUTION:侧重于方法的执行,要整个方法执行完了才开始匹配有 了JOIN POINT就可以定义POINTCUT了:pointcut outputLog() : call(public void helloWorld());pointcut 的完整定义<pointcut>::=<access_type><point_name> ({parameters}):{designator[&& || ]};切点有点象注册一个事件.当监视到了public void helloWorld()这个方法的执行就要发出通知,有点象FIRE哈  before() : outputLog() {    System.out.println("Before Call");  }起语法格式入下:advice::=[return type] type of advice"(formails)" [thowstypelist]":"pointcut"[advice body]"编译:AJC Test.java TestAspect .javajava Test运行结果:Before CallHello World


阅读全文(3635) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144767491 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号