1

我正在寻找一种向一些遗留 Java 代码添加一些跟踪诊断的方法。从这个意义上说,我的意思是我不能改变任何方法。如果我们考虑以下对象:

public class ClassIOwnAndCanChange {

    public static void main(String[] args) {
        // store my object here that I want to make
        // available in LegacyClassA and B
        myMethod("foo", 100);
    }    

}

public class LegacyClassA {

    // method I cannot change
    public void myMethod(String name, int timer) {

        //want to get my 'injected' object here so that I can, 
        //for instance, time this method
        methodCallThatTakesSomeTime("some param");

    }  

}

public class LegacyClassB {

    // method I cannot change
    public void methodCallThatTakesSomeTime(String name) {
        // want to get my 'injected' object here for
        // diagnostic reasons

    }

}

我拥有 A,我想在 B 和 C 中提供一个对象。在 Java 中执行此操作的正确方法是什么,而不更改 A 调用 B 的方法和 B 调用 C 的方法?

4

1 回答 1

4

您可以使用 AOP(面向方面​​编程)和/或其他形式的字节码操作来玩各种游戏。

你是否应该千差万别。

这取决于您的确切需求,以及您需要如何使用“注入”对象。我会首先考虑 AOP,因为像AspectJ这样的工具已经成熟。AOP 和 aThreadLocal可能就是您所需要的。

于 2013-06-21T13:23:25.040 回答