读书人

cflow的运用

发布时间: 2012-07-16 15:44:59 作者: rapoo

cflow的使用

cflow(pointcut):表示在执行连接点pointcut所匹配的函数时进行匹配,如下例所示:

package com.gaojian.aspectj.test1;public class Function {public void f() {System.out.println("method excution!");}public static void main(String[] args) {new Function().f();}}

? Test中的代码:

package com.gaojian.aspectj.test1;public class Test {public void foo(Function function) {function.f();}public void foo1(Function function){function.f();}public static void main(String[] args) {new Test().foo(new Function());System.out.println("*******differences**********");new Test().foo1(new Function());}}

?执行test中的main函数运行结果为

before call f()
method excution!
*******differences**********
method excution!

?

程序分析:1:aj pointcut的execution(* f(..))匹配function中的f()函数;

?????????????? 2:在类Test中调用f()函数应该都要执行aj中的前置通知函数;

?????????????? 3:aj pointcut中有cflow(call(* com.gaojian.aspectj.test1.*.foo(..))):当执行连接点call(* com.gaojian.aspectj.test1.*.foo(..))匹配的函数Test中foo()函数的时候进行匹配。

?????????????? 4:所以test中的foo执行时,aj中的前置函数执行了;则test中的foo1执行时,aj中的前置函数未执行了。

读书人网 >开源软件

热点推荐