Classworking 工具箱: 将 aspect 放到 werk 中
2010-03-18 00:00:00 来源:WEB开发网日志
我已介绍了 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));
}
}
Tags:Classworking 工具箱 aspect
编辑录入:爽爽 [复制链接] [打 印]- ››AspectJ 和模仿对象的测试灵活性:用“test-only”...
- ››Classworking 工具箱: 注释(Annotation)与 ASM
- ››Classworking 工具箱: ASM classworking
- ››Classworking 工具箱: 泛型与 ASM
- ››Classworking 工具箱: 分析泛型数据结构
- ››Classworking 工具箱: 将 aspect 放到 werk 中
- ››AspectJ 和模仿对象的测试灵活性
- ››Aspectwerkz 2.0开发企业AOP快速入门
- ››Classworking工具箱:反射泛型
- ››Classworking 工具箱: 反射泛型
- ››AspectJ: 通往AOSD之路的最佳军火
更多精彩
赞助商链接