如何使用CombinedConfiguration覆盖默认配置?

时间:2018-02-17 18:21:02

标签: java apache-commons-config

将配置添加到CombinedConfiguration(来自Apache Commons Configuration 2)时,如何指定一个配置覆盖另一个配置?

例如,假设我有默认配置和用户配置。如果我希望用户覆盖默认值,我该如何设置组合配置?

XMLConfiguration defaultConfig = ...;
XMLConfiguration userConfig = ...;

CombinedConfiguration config = new CombinedConfiguration();
config.addConfiguration(defaultConfig);
config.addConfiguration(userConfig);

2 个答案:

答案 0 :(得分:1)

这取决于传递给NodeCombiner类的构造函数的CombinedConfiguration。例如,如果使用OverrideCombiner,则添加到配置的第一项将优先于其他节点。如果您调用CombinedConfiguration的默认构造函数,则会使用UnionCombiner

OverrideCombiner Docs

MergeCombiner Docs

UnionCombiner Docs

答案 1 :(得分:0)

解决方案是使用OverrideCombiner,并且需要将配置从最高优先级添加到最低优先级。

CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
config.addConfiguration(userConfig);
config.addConfiguration(defaultConfig);