在启动时验证配置

您还记得那一整天的时间来解决问题,只是意识到自己输入了错误的配置设置吗? 是。 这不仅是一次。

避免这种情况并非易事,不仅您自己,而且您使用的框架都应该小心。 但是,让我概述一下我的建议。

始终在启动应用程序时验证您的配置。 这涉及三件事:

首先,检查您的配置值是否正确。 测试数据库连接URL,文件路径,数字和时间段。 如果缺少目录,无法访问数据库,或者您指定了一个非数字值(需要一个数字或一段时间),则应该立即知道,而应用程序已经使用了一段时间。

其次,确保设置了所有必需的参数。 如果需要某个属性,则在未设置该属性的情况下失败,并通过有意义的异常而不是空的NullPointerException失败(例如, throw new IllegalArgumentException("database.url is required") )。

第三,检查是否仅在配置文件中设置了允许的值。 如果无法识别配置,请立即失败并报告。 这将使您不必花费一整天的时间来尝试找出为什么设置“ request.time uo t”属性无效的原因。 这适用于具有默认值的可选属性,并带有额外的步骤:将新属性添加到允许的属性的预定义列表中,并可能忘记这样做导致异常,但这不会浪费一分钟以上。

最后一个建议的简单实现如下所示:

Properties properties = loadProperties();
for (Object key : properties.keySet()) {
  if (!VALID_PROPERTIES.contains(key)) {
    throw new IllegalArgumentException("Property " + key +
      " is not recognized as a valid property. Maybe a typo?");
  }
}

实现第一个比较困难,因为它需要一些逻辑-在通用属性加载机制中,您不知道属性是否是数据库连接URL,文件夹,超时。 因此,您必须在知道每个属性用途的类中进行这些检查。 您的数据库连接处理程序知道如何使用数据库URL,文件存储处理程序知道什么是备份目录,依此类推。 这可以与所需的属性验证结合使用。 在这里,像Typesafe config这样的库可能会派上用场,但并不能解决所有问题。

这不仅对开发有用,而且对于尝试配置其本地服务器的项目的新手来说,也是最重要的–生产,您可以在其中立即发现此版本中是否存在错误配置。

最终,目标是如果所提供的配置有任何问题,则尽早使失败,而不是花费大量的时间来追逐打字错误,缺少值和意外运行的服务。

翻译自: https://www.javacodegeeks.com/2014/10/validate-configuration-on-startup.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值