我正在将遗留应用程序转换为Spring。作为转换的一部分,我们将服务类从“实例化新类型时需要一个”样式转换为Springleton样式,因此我需要一种方法来确保它们没有任何状态。如何在Java包中找到实例变量的所有初始化?
我很喜欢* nix命令行,并且我可以访问IntelliJ(如果我能弄清楚如何使用它,这会使我非常适合结构搜索和替换),而且我可以跟踪Eclipse安装,如果这将有所帮助。我只是想确保我找到了所有可能的问题。
UPDATE:对不起,我很困惑。我没有找到旧构造函数被调用的地方的问题。我在寻找的是一个“防弹”,为什么要搜索所有100多种服务类别的任何内部状态。我能想到的最明显的一个(以及我迄今为止唯一发现的)是我们在类中使用memoization的情况,因此它们具有实例变量,它们在内部而不是通过Spring进行初始化。这意味着,当相同的Springleton用于不同的请求时,数据可能会在它们之间泄漏。 谢谢。
+1“Springleton” - 现在正在使用我的词汇表 – 2011-03-14 13:48:47
使构造函数为'private'并观察编译错误在您选择的IDE中弹出。 – 2011-03-14 13:51:32
+1或者你可以让它抛出一个异常,它会捕获动态创建实例的场景(例如Class.forName.neeInstance()) – 2011-03-14 14:54:23