Java中的属性文件与常量类

时间:2012-05-29 15:03:07

标签: java

我在Java中使用常量文件和属性文件时有点困惑。

如何决定何时使用 Constants.java 以及何时使用 .properties 文件?

8 个答案:

答案 0 :(得分:27)

您不希望用户/部署者/测试人员/测试人员更改它们时,在Java代码中使用硬连线常量。

你想要时,可以使用属性文件。

关键是在应用程序的源代码中更改硬连接常量需要编辑源代码,重建和重新部署。相比之下,更改属性文件可能就像启动NotePad一样简单。

答案 1 :(得分:5)

我的检查清单

属性文件:

是否可根据环境等进行配置。

消息,标签等。

适用于特定情况(规则等的状态列表)。 键值对。 可由开发人员以外的其他人修改,即分析师,商业用户等。

<强>常数:

是常数。不可配置。 主要用于优化和重用。为了避免密钥被分散。

对于YES =“yes”这样的常量。不是真正的关键价值。 缓存密钥等。

确保检索和设置使用相同的密钥的常量,即使从应用程序的不同位置,例如xyz.put(KeyConstants.SOME_KEY,“somevalue”); xyz.get(KeyConstants.SOME_KEY)来自不同的类,ofcouse xyz是共享的或单独的。

答案 2 :(得分:1)

  • 常量 - 当您不介意每次更改值时重新编译应用程序时。这里有点讽刺。如果它被称为常量,你为什么要改变它?)

  • 属性文件 - 当您想要更改值并且可能重新启动应用程序以获取更改时,可以轻松获胜。

答案 3 :(得分:1)

通常,常量类中的任何内容都被视为“硬编码”;也就是说,您需要重新编译才能进行更改。

使用.properties文件进行配置等操作,不必为了进行更改而强制重新编译。这样,您只需更改属性文件并重新启动应用程序即可。

答案 4 :(得分:1)

如果要指定从部署到部署或随时间变化的参数,通常会使用属性文件。

当参数不是动态参数时使用常量,因此不应根据外部因素进行更改。每次更改值时都必须重新编译该类。

答案 5 :(得分:1)

需要考虑许多不同的方面。最重要的是

  • 您可以编辑属性文件并在不重新编译应用程序的情况下使用它;
  • 属性文件不包含任何代码,因此每个人都可以在没有任何Java知识的情况下更改它们。

这些方面使属性文件对存储配置非常有用。

另一方面,常量类需要编译,但如果您打算不经常更改这些常量,则“更安全”。

答案 6 :(得分:1)

常量在编译时固定。因此,如果你没有预见到值的任何变化,常量将是个好主意。

答案 7 :(得分:0)

属性具有可外部化的优点。您可以将一个属性文件用于开发,另一个用于测试,另一个用于生产。 很多时候,很少更改属性,软件工作的内部属性被放入属性文件中,使其难以管理。

编译OTOH常量,以便在编译时捕获任何错误。

所以答案是,这取决于。如果属性中的值是您想要外部化的真正配置更改,则使用属性文件。否则使它们成为Java常量。不过,你最终可能会同时使用两者。