【问题标题】:Java - The best way to store configs inside a programJava - 在程序中存储配置的最佳方式
【发布时间】:2015-06-02 15:01:02
【问题描述】:

我有一个 XML 文件,其中包含代码分析器的规则(用于搜索漏洞)。因此,它有非常不同的规则,如参数、参数计数、任何参数类型、常量值等,用于方法调用(检测特定调用),检测某些导入、继承等的规则。但是如何将它存储在我的程序中? 我找到了两种方法:

  1. 扫描时解析 xml(到内部表示)
  2. 为每个元素创建类:参数、参数值、数量 参数

有实现这个东西的真实例子吗?或者你可以只说最好/常用的方法

【问题讨论】:

  • 欢迎提问和评论,我会修改问题
  • 将它保留在代码中的原因是什么?在这种情况下,您不能在 dev/test/prod 环境之间移动 - 您需要更改代码。将配置保存在同一存储库中的 xml 文件中,并将其用作资源。

标签: java xml config


【解决方案1】:

保存在 XML 文件中可能是最简单的方法

【讨论】:

  • 但这需要我编写更多重复的代码。试想一下:不同的任务有不同的规则。我还想添加包含逻辑运算符的条件
  • XML 是我所知道的最常用的存储配置的方式。这些条件很可能会在 java 代码中处理。您可能需要编写更多重复的代码,但遵循通用方法并不会扼杀代码的可维护性
  • 你说得对,但我打算做一种 AST(令牌是我的最终规则,不是 NOT、OR 和 AND 逻辑运算符),这不是很好吗?
  • 你不能从 xml 文件中读取并创建你的 AST 吗?然后你可以重用任何适用的树来减少重复代码
  • 这有帮助吗?还有问题吗?如果是,我很乐意尝试回答,如果不是,请接受
【解决方案2】:

如果您想在代码中保留配置 - 请使用代码来执行此操作。这是简单初始化的好example

Map<String, Integer> config = new HashMap<String, Integer>()
{{
     put("One", 1);
     put("Two", 2);
     put("Three", 3);
}};

【讨论】:

  • 那是什么? HashMap 如何帮助我存储配置?
  • 您没有提供任何示例。我认为这是简单的键=值对。如果不是,那么 xml 是唯一的选择。我会引用自己“将配置保存在同一存储库中的 xml 文件中并将其用作资源”
【解决方案3】:

对于这种情况,我喜欢使用属性文件

.properties 是主要用于 Java 相关技术的文件的文件扩展名,用于存储应用程序的可配置参数。它们还可以用于存储字符串以进行国际化和本地化;这些被称为属性资源包。

假设您的包 path.to.your 中有一个文件和属性文件 file.properties,您可以将它们包含在您的 jar 中并使用 getClass().getResourceAsStream("/path/to/your/file.properties") 恢复该文件,然后您可以加载包,更改参数,添加新密钥等,更多信息请通过MKYong - Java Properties file examples

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2017-06-05
    • 2012-01-14
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多