有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing如何在不传递ID的情况下识别运行在哪个Java小程序上下文中?

我是一个开发相当大的Swing Java小程序的团队的一员。我们的大多数代码都是遗留代码,有大量的单例引用。我们将所有这些都集中到一个“应用程序上下文”单例中。我们现在需要的是创建一些方法来分离共享上下文(当前显示的所有小程序共享)和非共享上下文(特定于当前显示的每个小程序)

然而,我们在调用单例的每个位置都没有ID,也不想将ID传播到所有位置。确定我们在哪个小程序上下文中运行的最简单方法是什么?(我尝试过处理类加载器、线程组、线程ID……到目前为止,我找不到任何可以让我识别调用来源的东西)


共 (1) 个答案

  1. # 1 楼答案

    如果我理解正确的话,这个想法是为每个调用方对象或“上下文”获取不同的“单例”对象。 可以做的一件事是创建一个线程局部全局变量,在其中写入当前上下文的ID。(这可以通过AOP实现。)然后在singleton getter中,从本地线程获取上下文ID,用作调用上下文的正确“singleton”实例的键

    关于AOP,在小程序中使用它应该没有问题,因为根据切点的不同,建议是在编译时编织的,JAR被添加到运行时依赖项中。因此,运行时不应保留AOP的特殊证据