2011-03-14 54 views
2

我正在将遗留应用程序转换为Spring。作为转换的一部分,我们将服务类从“实例化新类型时需要一个”样式转换为Springleton样式,因此我需要一种方法来确保它们没有任何状态。如何在Java包中找到实例变量的所有初始化?

我很喜欢* nix命令行,并且我可以访问IntelliJ(如果我能弄清楚如何使用它,这会使我非常适合结构搜索和替换),而且我可以跟踪Eclipse安装,如果这将有所帮助。我只是想确保我找到了所有可能的问题。

UPDATE:对不起,我很困惑。我没有找到旧构造函数被调用的地方的问题。我在寻找的是一个“防弹”,为什么要搜索所有100多种服务类别的任何内部状态。我能想到的最明显的一个(以及我迄今为止唯一发现的)是我们在类中使用memoization的情况,因此它们具有实例变量,它们在内部而不是通过Spring进行初始化。这意味着,当相同的Springleton用于不同的请求时,数据可能会在它们之间泄漏。 谢谢。

+1

+1“Springleton” - 现在正在使用我的词汇表 – 2011-03-14 13:48:47

+2

使构造函数为'private'并观察编译错误在您选择的IDE中弹出。 – 2011-03-14 13:51:32

+0

+1或者你可以让它抛出一个异常,它会捕获动态创建实例的场景(例如Class.forName.neeInstance()) – 2011-03-14 14:54:23

回答

0

我建议使用构建在重构工具中的Eclipse,它将尽最大努力相应地更改与该类关联的每个实例。我会更进一步,重新命名你想改变的类,在最坏的情况下,完整的编译将会失败,你可以很容易地解决任何这些问题。

1

在Eclipse中,您可以右键单击一个变量/类型,并且可以选择引用(或声明) - >(Workspace/Project/Hierarchy),它可以帮助您整齐地找到它的所有实例。