gpt4 book ai didi

java - 自动跟踪方法进入/退出

转载 作者:行者123 更新时间:2023-11-30 05:24:48 29 4
gpt4 key购买 nike

我想用我自己的日志系统自动跟踪所有java方法的进入和退出。但我不想用这个污染所有代码。

你知道是否存在一种在编译时自动添加它的方法吗?

最佳答案

您可能需要检查AspectJ方面编程的概念。

Aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behavior to existing code (an advice) without modifying the code itself, instead separately specifying which code is modified via a "pointcut" specification, such as "log all function calls when the function's name begins with 'set'". This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code, core to the functionality. AOP forms a basis for aspect-oriented software development.

这是AspectJ project页。

在综合过程中,您将能够定义编译器在注释处理时需要插入额外日志记录代码的位置。

例如:

@Pointcut("call(* aspects.trace.demo.*.*(..))")
public void traceMethodsInDemoPackage() {}

这将包括使用任何参数对这些包中任何类的所有调用。在切入点定义之后,您可以指定如下建议:

@Before("traceMethodsInDemoPackage()")
public void beforeTraceMethods(JoinPoint joinPoint) {
// trace logic ..
}

您将能够通过JointPoint接口(interface)访问实际参数和其他对象。

请注意,输入/输出操作可能会很昂贵,因此您需要平衡要记录的信息量与非常具体的切入点。

希望这有帮助。

干杯!

关于java - 自动跟踪方法进入/退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58872904/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com