日期:2014-05-17  浏览次数:20895 次

跟我学aspectj之五 ----- args带参数的pointcut

?

  上一节,我们overview了一下pointcut的类型,怎么够多吧? 不夸张的说基本涵盖了Java程序的所有生命周期。这就以为着:我们可以控制到一个已经存在的Java程序的任何地方和环节。可能你还不太懂上一节的东西,或是懵懂。不要急,接下来,我会把常用的几个一一帮你介绍。但是本节,我们仍然要看基础语法。

?

  为了演示,我们要修改我们的HelloWorld.java。修改后的代码如下:

?

?

我们增加了一个main(int i)的方法。再运行一下,发现拦截2次,也就是说:2个main()方法都被拦截,现在,leader说:我只要你拦截接受int参数的main()。怎么办?

那么我们修改一下HelloAspect。

?


再运行一下,发现只拦截了一次吧。

?

?

  可leader这人比较烦,他总是没完没了。他又说:我现在要获取main()方法里面的参数值。又加需求,广大同胞最痛恨的事情莫过于此。抱怨归抱怨,代码终归还得改吧,谁让我们吃这碗饭的勒。修改过后的代码如下:

?

?

?

赶紧运行一下。。看看结果~  发现是不是获取到了? leader又说了:我们要改变参数的值。可你也看到了,目前我们做的改变没有影响到main()方法啊。怎么办勒?这里我们先卖个关子,稍候我们介绍advice的时候来解决。

?