WEB开发网
开发学院软件开发Java Classworking 工具箱: 将 aspect 放到 werk 中 阅读

Classworking 工具箱: 将 aspect 放到 werk 中

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 日志我已介绍了 AspectWerkz 的基本概念,那么如何将这些概念应用到日志记录功能呢?上一节中的方法调用例子应该是一个很好的起点,Classworking 工具箱: 将 aspect 放到 werk 中(4),如果可以配置 AspectWerkz 在每次需要关注的方法调用之前和之后,分别执

日志

我已介绍了 AspectWerkz 的基本概念,那么如何将这些概念应用到日志记录功能呢?上一节中的方法调用例子应该是一个很好的起点。如果可以配置 AspectWerkz 在每次需要关注的方法调用之前和之后,分别执行 beforeMethod() 和 afterMethod(),那么它们会提供应用程序执行的有用踪迹。

当然,要使执行踪迹有用,需要对 清单 1 的方法给出的最小信息输出进行扩展。幸运的是,AspectWerkz 提供了访问中断的 pointcut 的信息的方便方法。清单 3 中的代码展示了如何访问 pointcut 中的实际方法信息。

清单 3. 报告被中断的方法的 Advice 方法

package com.sosnoski.aspectwerkz; 
public class TraceAspect 
{ 
  public void beforeMethod(JoinPoint join) { 
    MethodSignature signature = 
      (MethodSignature)join.getSignature(); 
    System.out.println("Entering method " + 
      signature.getName()); 
  } 
   
  public void afterMethod(JoinPoint join) { 
    MethodSignature signature = 
      (MethodSignature)join.getSignature(); 
    System.out.println("Leaving method " + 
      signature.getName()); 
  } 
} 

为了测试这段初步的日志记录代码,我将使用一个精巧的递归方法,它是斐波纳契数列计算的一个实现,如清单 4 所示。

清单 4. 斐波纳契数列计算

package com.sosnoski.aspectwerkz; 
public class FiboTest 
{ 
  private long fibo(int value) { 
    if (value > 2) { 
      return fibo(value-1) + fibo(value-2); 
    } else { 
      return 1; 
    } 
  } 
   
  public static void main(String[] args) { 
    FiboTest inst = new FiboTest(); 
    int value = Integer.parseInt(args[0]); 
    System.out.println("Fibo[" + value + "] is " + 
      inst.fibo(value)); 
  } 
} 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Classworking 工具箱 aspect

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接