拦截所有无第三方组件的函数入口点和出口点

Intercept all function entry and exit points without third-party components

我有一个 java 程序。我想拦截每个函数入口和出口并记录它们,而不更改现有的 (~5k) 函数体。

我知道 AspectJ 和 Spring AOP 很适合。但不幸的是,我不允许在目标系统上使用它们(这不是我的决定)。

一种可能是使用以下方法:

void func()
{
    logger.logEntry();

    // here stuff

    logger.logExit();
}

如何在没有任何第三方 component/tool(这非常重要!)的情况下实现此 并且不需要插入这些提到的额外痕迹?是否有任何 Java interface/abstract class 或任何其他 method/possibility 可用于此目的?或者任何事件 handler/subsriber 等等?

当我用谷歌搜索时,我只找到了第三方解决方案。

最好的解决方案是什么,如果一个抽象 class 具有 2 个抽象函数,如果从它扩展的 classes 方法的函数被调用。像这样:

public abstract class InterceptFunctionCalls
{
    // here the internal stuff that call the following methods below

    protected abstract void EnteredFunction(String func);
    protected abstract void ExitedFunction(String func);
}

Is there any Java interface/abstract class or any other method/possibility that can be used for this purpose?

不...这就是为什么一些第三方决定出现并满足需求的原因。 Java 因为未扩展语言没有尝试提供 AOP。