Java Web应用程序 - 属性文件噩梦

时间:2014-02-05 01:13:20

标签: java spring

我最近开始研究一个设计和开发很少的Web应用程序。我发现它使用了大约300个属性文件,并且所有属性文件的读取方式都是这样的:

Properties prop= new Properties();
FileInputStream fisSubsSysten = new FileInputStream("whatever.properties");
prop.load(fisSubsSysten);

也就是说,它正在从当前工作目录中读取属性文件。另一个问题是开发人员选择在同一个java文件中多次使用上述行。例如,如果有10个方法,则每个方法都将使用上述代码,而不是使用一个方法并在必要时调用它。

这意味着,我们永远不能改变属性文件的位置,目前它们直接位于websphere个人资料目录下,是不是这个难看?如果我将它们移动到其他地方,并在类路径中设置该位置,则它不起作用。

我尝试使用Spring IO utils库更改上面这些行:

    Resource resource = new ClassPathResource("whatever.properties");
    Properties prop = PropertiesLoaderUtils.loadProperties(resource);

但是这个应用程序有超过1000个文件,我发现无法更改每个文件..你将如何重构这个混乱?有什么简单的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

在这些“重构”的情况下,我使用简单的查找和替换方法。 Notepad ++有一个“查找文件”功能,但有很多类似的程序。

创建一个类,该类使用可能带有属性文件的name参数的方法来加载属性。 这可以是java单例或spring bean。

使用空行搜索并替换所有“new Properties()”行。

使用对新类/方法的引用替换所有“load ...”行。 Notepad ++支持正则表达式替换,因此您可以使用文件名作为参数。

完成此操作后,请转到eclipse并启动“清理”或“组织导入”,并在需要时手动修复一些编译错误。

这种方法非常简单,如果你运气不超过10分钟,如果你运气不好,则需要1小时,比如说。代码格式是一种方式,每个文件看起来都不同。

如果您之前使用300或更长的行长度格式化项目,则可以使替换更简单,因此每个java语句都在一行上。这使得查找和替换更容易,因为您没有要考虑的新行。

答案 1 :(得分:1)

我只能同意,从您的参考资料中我发现您的项目有点令人生畏。 但是,选择如何维护或改进它是一种仅需要评估和优先考虑的风险。

考虑建造高层建筑,然后意识到固定基础设施的螺栓有设计缺陷。取而代之的前景确实令人生畏,所以要考虑如何改变它们以及它们是否确实需要更换,很少,很多或全部。

我认为它必须是公司的核心系统,有人建造并且他们可能已离开项目(?),并且您考虑改进或维护它们。但同样,您必须评估移动属性文件是否真的很重要,或者您是否可以在文件系统中使用符号链接。或者,你真的需要将它们全部移动,还是只有少数可以真正受益于移动。您是否可以使用稍后要修复的标记来标记代码中的所有位置。我有时会通过弃用标记坏类,并承诺修复受影响的类但推迟到我在这些类中进行其他更改,直到最终可以安全地删除已弃用的类。

无论如何,你应该评估你的选择,留下文件,替换所有或部分,并提供一些成本和后果的估计,并询问你的经理采取哪种方法。

请注意,总是高估你不想做的解决方案,因为你喝咖啡休息时间的可能性是你的两倍,并且告诉你的广告牌对于决策来说是一个很好的杠杆:)< / p>

在您的问题的技术方面,正则表达式搜索和替换可能是唯一的选择。我通常会将配置文件放在classpath可以访问的位置。

答案 2 :(得分:0)

您可以尝试使用eclipse搜索功能。例如,如果右键单击属性类的load()方法并选择References - &gt;项目它将为您提供项目中使用该方法的所有位置。

enter image description here

也可以从那里尝试全局正则表达式搜索和替换。

相关问题