繁体   English   中英

Java 中的属性文件与常量类

[英]Properties file vs Constants class in Java

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

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

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

您确实希望这成为可能时,使用属性文件。

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


你评论说:

正如您所说,更改属性文件很简单,而更改常量文件需要我们重新构建应用程序。 那么,我们不应该总是更喜欢使用属性文件吗?

不,并非总是如此。 例如,如果您将应用程序分发给最终用户以安装在他们的机器上,并且您不希望用户更改它的常量,那么将它们放在属性文件中将是一个坏主意。

不可能将其简化为“总是喜欢 X”的建议。 您需要了解自己的应用要求并自行决定。

我的检查清单

属性文件:

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

消息、标签等

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

持续的:

是常数。 不可配置。 主要用于优化和重用。 以免钥匙散落。

对于像 YES = "yes" 这样的常量。 不是真正的关键值。 缓存等的键

即使来自应用程序中的不同位置,用于确保检索和设置使用相同键的常量,例如 xyz.put(KeyConstants.SOME_KEY, "somevalue"); xyz.get(KeyConstants.SOME_KEY) 来自不同的类,当然 xyz 是共享的或单例的。

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

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

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

.properties文件用于诸如配置之类的事情,您不必为了进行更改而被迫重新编译。 通过这种方式,您可以简单地更改属性文件并重新启动您的应用程序。

当您想要指定因部署而异或随时间变化的参数时,通常会使用属性文件。

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

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

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

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

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

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

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

OTOH 常量被编译,因此任何错误都将在编译时被捕获。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM