如何在应用程序配置文件中命名可配置的URL?

时间:2016-09-09 10:20:01

标签: java configuration network-programming configuration-files

假设我有一个应用程序可以与其他几个应用程序(微服务,如果您愿意)或系统进行通信。当然,应该在运行时或配置文件中提供那些其他应用程序或系统的地址。

其他一些应用程序或系统使用HTTP,有些是经纪人或其他自定义协议。现在我有问题如何在配置文件中声明它。

例如,REST API应该有方案(http / https),主机和端口,其他只需要主机和端口。数据库需要主机,端口和数据库路径(其余部分在URL的jdbc:部分之后)。如何在配置文件中命名这些变量,以便配置它们的用户可以轻松地扣除它们是什么,是否应该在开始时输入方案,以及它们的期望值并保持一致?有时我会迷惑自己。我可以找到URL的单独部分的名称,但不能找到某个分组部分的名称。

示例:

api1.host = http://example.com # error, this is the first part of the URL, before the path is appended
api2.url = http://example.com/api # error, I needed the part without the /api
broker.host = 192.168.2.2 # error, the user forgot the port

如何避免这种情况并保持一致?

一个可能的解决方案,虽然丑陋但是:

api1.SchemeHostPort = ...
db.HostPortPath = ...

1 个答案:

答案 0 :(得分:1)

我怀疑你不会找到一个万无一失的方法(如果你这样做,会有更多的资源傻瓜)。但是,我认为您可以采取一些措施来提供帮助。

  1. 正如您在问题中所建议的那样,请使用<name>.<type> = <value>或[{1}}表单中的配置条目。
  2. 如果可能,请将所有此类变量收集在一起,并在其前面加上一个注释块,说明每个<type>.<name> = <value>应使用哪种<value>
  3. 当检索配置变量的值时(通常在启动时),您的应用程序应对该值执行一些验证检查,并报告错误并在验证检查失败时死亡。