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

Classworking 工具箱: 将 aspect 放到 werk 中

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 加以改进清单 5 显示调用了 清单 3 中的 advice 方法, 但是没有提供关于所执行的应用程序的很多有用信息,Classworking 工具箱: 将 aspect 放到 werk 中(6),通过修改这个 advice 以缩进方式显示嵌套的方法调用,并且打印传递和返回的值,我将改进这一不足,

加以改进

清单 5 显示调用了 清单 3 中的 advice 方法, 但是没有提供关于所执行的应用程序的很多有用信息。通过修改这个 advice 以缩进方式显示嵌套的方法调用,并且打印传递和返回的值,我将改进这一不足。为此,我还要将这个 advice 改为另一种类型:around advice 类型。清单 6 显示了修改后的代码。

清单 6. 带有缩进和值打印的 advice 方法

private int m_nestingDepth; 
private void indent() { 
    for (int i = 0; i < m_nestingDepth; i++) { 
      System.out.print(' '); 
    } 
  } 
   
private void printCall(JoinPoint call) { 
  MethodSignature signature = 
    (MethodSignature)call.getSignature(); 
  System.out.print(signature.getName()); 
  System.out.print('('); 
  MethodRtti rtti = (MethodRtti)call.getRtti(); 
  System.out.print(rtti.getParameterValues()[0]); 
  System.out.print(')'); 
} 
public Object traceLong(JoinPoint join) throws Throwable { 
     
  // print entering information 
  indent(); 
  System.out.print("Entering method "); 
  printCall(join); 
     
  // execute the joinpoint method 
  m_nestingDepth++; 
  Object result = join.proceed(); 
  m_nestingDepth--; 
     
  // print exiting information 
  indent(); 
  System.out.print("Leaving method "); 
  MethodSignature signature = 
    (MethodSignature)join.getSignature(); 
  System.out.print(signature.getName()); 
  System.out.print('<'); 
  System.out.println(result); 
     
  // return result from method call 
  return result; 
} 

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

Tags:Classworking 工具箱 aspect

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