Java中的属性文件vs Constants类

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

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

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

如果您希望这样做,请使用属性文件。

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

我的清单

属性文件:

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

消息,标签等

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

不变:

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

对于常数,如YES =“是”。 不是真正的关键价值。 缓存等的键

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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