获取和设置键值属性

时间:2017-03-16 04:49:04

标签: java properties

我有类似的东西:

    Properties props = new Properties();
    // This type of key-value property is in several code lines
    props.put("mail.transport.protocol", settings.getSmtpProtocol());

在我的代码中,在几个地方访问道具。每次,我需要通过其字符串键访问一些属性。最近,我在其中一个关键字符串中进行了一些小的代码更改,并且密钥不匹配造成了严重破坏。

假设它在不久的将来会增加大小和复杂性,那么在我的代码库中应该避免出现这种问题的正确设计是什么?我可以考虑以下选项,但不确定最佳方式:

  1. 而不是像代码中的几个地方那样将密钥写为“mail.transport.protocol”,“mail.smtp.host”,“mail.smtp.port”等字符串,而是将它们存储在类中?并且单元测试是否将适当的类变量添加到属性中?

  2. 我是否应该将道具重构为另一个类[仅包含我所需的属性],道具是否已在许多代码行中获取/设置?

  3. 拥有道具中的关键字符串,并将“关键字”作为单元测试?但是,密钥被写成几次字符串。

1 个答案:

答案 0 :(得分:0)

创建单独的属性文件。说mail.properties。

此文件包含所有键值对。将来如果有人想要更改任何属性,他只需更新此属性文件而不是更改java类。

然后创建一个Java类来加载所有这些属性,并为该类中的每个属性创建公共静态常量。

在您想要使用它们的地方使用上述常量。