我正在尝试以格式创建 Java 属性文件
api.base=http://example.com/api
api.get_posts=<dynamic_value_for_api_base>/get_posts
我不太确定它是否可能,但我之前肯定见过它(尽管它可能是使用 Ant 完成的)。在这种情况下,我可以在属性文件中做些什么,而不必在 Java 中以编程方式进行吗?
谢谢斯蒂芬
我正在尝试以格式创建 Java 属性文件
api.base=http://example.com/api
api.get_posts=<dynamic_value_for_api_base>/get_posts
我不太确定它是否可能,但我之前肯定见过它(尽管它可能是使用 Ant 完成的)。在这种情况下,我可以在属性文件中做些什么,而不必在 Java 中以编程方式进行吗?
谢谢斯蒂芬
在 Java 中,您可以拥有自己的属性文件。您也可以在运行时修改它们(这似乎不是您所追求的,但我认为知道它很方便)。您可以查看此链接以获取更多信息。
除了通过代码编辑文件之外,没有真正的方法可以在文件中动态更改它。
我认为最好只放:
api.get_posts=get_posts
以及您将在代码本身中添加的动态部分。
您会看到的是 ant 或 maven 过滤器。可以使用它在构建时设置变量。
您所说的不会发生在资源加载器中,它们会在没有代码的情况下读取属性文件。
此外,当然,如果您正在编写 java 来读取属性以实现模式匹配以支持这一点。
通常没有人打扰,因为在构建时使用过滤器和 mvn 或 ant 更容易,或者只编写代码不需要冗余配置块,这些配置块将受益于动态内容。
Struts 中有一些方法可以做到这一点。我相信它在 ActionMessage 类中。我们自己编写了它,它可以很容易地连接到一个属性文件对象:
public static String addCustomText(String message, List values) {
if (CollectionUtils.isEmpty(values)) {
return message;
}
String temp = message;
for (int i = 0; i < values.size(); i++) {
temp = StringUtils.replace(temp, "{" + i + "}", StringUtils.trimToEmpty((String) values.get(i)));
}
return temp;
}
因此,您可以编写一个属性文件访问器,然后使用此方法换出 {0} 等。
如果您正在寻找一种方法来覆盖属性文件中存在的属性,例如属性名称 = 属性值。
您可以通过在运行时覆盖文件本身来覆盖此属性。
这意味着先前存在的文件被完全覆盖,而这个新文件将取而代之。
因此,以前可能存在的任何属性都不再存在。因此,在执行此操作时需要注意一些事项。看一下这个,看看这是如何实现的 我如何创建一个文件并用 Java 写入它?