将配置添加到CombinedConfiguration(来自Apache Commons Configuration 2)时,如何指定一个配置覆盖另一个配置?
例如,假设我有默认配置和用户配置。如果我希望用户覆盖默认值,我该如何设置组合配置?
XMLConfiguration defaultConfig = ...;
XMLConfiguration userConfig = ...;
CombinedConfiguration config = new CombinedConfiguration();
config.addConfiguration(defaultConfig);
config.addConfiguration(userConfig);
答案 0 :(得分:1)
这取决于传递给NodeCombiner
类的构造函数的CombinedConfiguration
。例如,如果使用OverrideCombiner
,则添加到配置的第一项将优先于其他节点。如果您调用CombinedConfiguration
的默认构造函数,则会使用UnionCombiner
。
答案 1 :(得分:0)
解决方案是使用OverrideCombiner,并且需要将配置从最高优先级添加到最低优先级。
CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
config.addConfiguration(userConfig);
config.addConfiguration(defaultConfig);