在没有第三方组件的情况下拦截所有功能入口和出口点

时间:2018-05-25 08:07:41

标签: java exit-code entry-point interception

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

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

一种可能性是使用以下内容:

void func()
{
    logger.logEntry();

    // here stuff

    logger.logExit();
}

如何在没有任何第三方组件/工具的情况下实现 (这非常重要!),而无需插入这些提到的额外痕迹?是否有任何Java接口/抽象类或可用于此目的的任何其他方法/可能性?或者任何事件处理程序/子程序等?

当我用Google搜索时,我发现只有第三方解决方案。

如果调用带有2个抽象函数的抽象类,如果调用from扩展类的方法的函数,那么最好的灵魂是什么。像这样:

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);
}

1 个答案:

答案 0 :(得分:2)

  

是否有任何Java接口/抽象类或任何其他类   可用于此目的的方法/可能性?

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