我在Java中使用常量文件和属性文件时有点困惑。
如何决定何时使用 Constants.java 以及何时使用 .properties 文件?
答案 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)
需要考虑许多不同的方面。最重要的是
这些方面使属性文件对存储配置非常有用。
另一方面,常量类需要编译,但如果您打算不经常更改这些常量,则“更安全”。
答案 6 :(得分:1)
常量在编译时固定。因此,如果你没有预见到值的任何变化,常量将是个好主意。
答案 7 :(得分:0)
属性具有可外部化的优点。您可以将一个属性文件用于开发,另一个用于测试,另一个用于生产。 很多时候,很少更改属性,软件工作的内部属性被放入属性文件中,使其难以管理。
编译OTOH常量,以便在编译时捕获任何错误。
所以答案是,这取决于。如果属性中的值是您想要外部化的真正配置更改,则使用属性文件。否则使它们成为Java常量。不过,你最终可能会同时使用两者。