- 浏览: 7192 次
- 性别:
- 来自: 上海
最新评论
文章列表
MyAspectj中的代码:
package com.gaojian.aspectj.test;
public aspect MyAspectj {
/*调用某个文件夹下面所有的class*/
// pointcut callF(): execution(* com.gaojian..*.*(..));
/**
* 1) before : 在目标函数执行前执行
* 2) after :在目标函数执行后执行
* 3) after returning : 在目标函数返回是执行
* 4) after ...
call
和
execution
的指示符分别为
call
(
Method-Signature
)、
execution
(
Method-Signature
),匹配方法签名的方法或构造函数的执行。
对于
call
来说,调用的连接点位于方法调用点的调用代码处;对于
execution
来说,执行的连接点位于方法执行的位置。也就是说,
call
和
execution
的重要区别在于它们传递了哪些类型给
AspectJ
编译器以用来与
aspect
进行链接。
...
一:一个典型的aspect类的形式如下:
public aspect MyAspectj {
//定义连接点函数
pointcut callF(): execution(* f(..)) && cflow(call(* Test.foo(..)));
//定义通知函数
before() : callF() {
System.out.println(" ...
cflow(pointcut):表示在执行连接点pointcut所匹配的函数时进行匹配,如下例所示:
aj中的代码:
package com.gaojian.aspectj.test;
public aspect MyAspectj {
pointcut callF(): execution(* f(..)) && cflow(call(* com.gaojian.aspectj.test1.*.foo(..)));
before() : callF() {
System.out.println("before call ...