posts - 431,  comments - 344,  trackbacks - 0

execution(Signature)切入点的语法是:
pointcut <pointcut name>(<any values to be picked up>) : execution(<optional  modifier> <return type> <class>.<method>(<parameter types>));
它与call(Signature)切入点类似,但重要的区别是:在什么地方调用通知,以及它的环境是什么?
就call(Signature)切入点来说,在调用方法的地方调用通知。调用通知的环境是调用类。一旦进入方法,因而调用的环境是正在执行的方法时,就会调用execution(Signature)切入点。
另外:call(Signature)切入点和execution(Signature)切入点在捕获继承和/或重写(依赖于对象的静态和动态类型)的对象方法上的连接点时它们有一些奇怪的行为。
 
package com.eric.aspectj;

public aspect MyAspectj {
 pointcut callPointCut(My myClass, int age, String name) : execution(void com.eric.aspectj.My.foo(int, String)) && this(myClass) && args(age, name);
 before(My myClass, int age, String name) : callPointCut(myClass, age, name) {
  System.out.println("signature: " + thisJoinPoint.getStaticPart().getSignature());
  System.out.println("Source Line: " + thisJoinPoint.getStaticPart().getSourceLocation());
  System.out.println("before...name : " + name + " age : " + age);
 }
 after(My myClass, int age, String name) returning: callPointCut(myClass, age, name) {
  System.out.println("after...");
 }
}

posted on 2007-07-03 15:38 周锐 阅读(345) 评论(0)  编辑  收藏 所属分类: AspectJ

只有注册用户登录后才能发表评论。


网站导航: