拦截所有无第三方组件的函数入口点和出口点
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。
我有一个 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。