AspectJ主要有三个地方: JIONPOINT POINTCUT ADVICE下面就从POINTCUT 的指示符和有关的上下文关系,反射开始:thisJoinPoint.getSignature():thisJoi,nPoint是ASPECTJ上下文定义的的一个类:可以访问切口环境,输出的结果是连接点的方法签名,比如(String Test.getName()) pointcut uniqueLog(String s) : call(public void helloWorldUnique(String)) && args(s); before(String s) : uniqueLog(s) { System.out.println("Passed value = " + s);}:可以访问主JAVA文件中方法的参数,4个地方的变量必须一致下面几个关于访问上下文环境的import org.aspectj.lang.*;import org.aspectj.lang.reflect.*;public aspect DVDAspect { pointcut field() : call(private void setCount(int)); before() : field() { Object[] args = thisJoinPoint.getArgs(); SourceLocation sl = thisJoinPoint.getSourceLocation(); System.out.println(thisJoinPoint.getKind()); Class theClass = (Class)sl.getWithinType(); System.out.println(theClass.toString()); for(int i=0;i<args.length;++i) { System.out.println("Argument:" + i + " is " + args[i] + " type: "); } }}下面是在类中属性中进行切面public aspect ArrayAspect { pointcut array() : set(public String Array.test); before() : array() { System.out.println("Values Array changed"); }} |