gpt4 book ai didi

java - Apache Commons 配置 : Duplicate entries with enabled auto save

转载 作者:行者123 更新时间:2023-11-29 08:58:02 27 4
gpt4 key购买 nike

我使用包含两个 org.apache.commons.configuration.XMLConfiguration 实例的 org.apache.commons.configuration.CombinedConfiguration。一个用作默认配置并与我的 JAR 一起部署,另一个是可以覆盖默认值的用户配置。

下面是一些加载实例的代码:

    XMLConfiguration defaultConfig = new XMLConfiguration(defaultConfigFileURL);
XMLConfiguration userConfig = new XMLConfiguration(extConfigFilePath);
userConfig.setAutoSave(AUTO_SAVE);
FileChangedReloadingStrategy strategy = new FileChangedReloadingStrategy();
strategy.setRefreshDelay(FILE_REFRESH_RATE);
userConfig.setReloadingStrategy(strategy);
userConfig.setExpressionEngine(new XPathExpressionEngine());
defaultConfig.setExpressionEngine(new XPathExpressionEngine());
this.config = new CombinedConfiguration();
this.config.setExpressionEngine(new XPathExpressionEngine());
OverrideCombiner oc = new OverrideCombiner();
this.config.setNodeCombiner(oc);
this.config.setThrowExceptionOnMissing(true);
this.config.addConfiguration(userConfig, "USER");
this.config.addConfiguration(defaultConfig, "DEFAULT");

使用AUTO_SAVE = true userConfig 实例会自动将更改保存到目前正在运行的文件中。我的问题是,它多次添加参数,因此配置文件看起来很困惑:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fst_configuration>
<parameters>
<WS_PASS_TO_SAP>true</WS_PASS_TO_SAP>
<PATH_CESA_DIR>C:\FST-RELEASE\FST\build\web\WEB-INF\cesa</PATH_CESA_DIR>
<PATH_ERIC_WORK_DIR>C:\FST-RELEASE\FST\build\web\WEB-INF\eric</PATH_ERIC_WORK_DIR>
<PATH_HSQL_DB>C:\FST-RELEASE\FST\build\web\WEB-INF\db</PATH_HSQL_DB>
<PATH_HSQL_DB>C:\FST-RELEASE\FST\build\web\WEB-INF\db</PATH_HSQL_DB>
<CESA_CMD_VERSION>17566520</CESA_CMD_VERSION>
<PATH_HSQL_DB>C:\FST-RELEASE\FST\build\web\WEB-INF\db</PATH_HSQL_DB>
<CESA_CMD_VERSION>17566520</CESA_CMD_VERSION>
</parameters>
(...)

例如,我在启动时更改了参数PATH_HSQL_DB。在 3 次启动后,该参数在分配给 userConfig 的文件中存储了 3 次。

这是将参数添加到 userConfig 实例的代码:

(...) // value is a String
String name = "PATH_HSQL_DB";
String keyString = String.format("/parameters/%s", name);
userConfig.addProperty(keyString, value);

我能做些什么来防止这种情况发生?

最佳答案

您是在添加属性而不是设置属性。使用

String name = "PATH_HSQL_DB";
String keyString = String.format("/parameters/%s", name);
userConfig.setProperty(keyString, value);

添加属性不会删除现有属性,设置它们会。

关于java - Apache Commons 配置 : Duplicate entries with enabled auto save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19138637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com