如何使用 CombinedConfiguration 覆盖默认配置?
How do you use a CombinedConfiguration to override a default configuration?
将配置添加到 CombinedConfiguration(来自 Apache Commons 配置 2)时,如何指定一个配置覆盖另一个配置?
例如,假设我有一个默认配置和一个用户配置。如果我希望用户覆盖默认值,我该如何设置组合配置?
XMLConfiguration defaultConfig = ...;
XMLConfiguration userConfig = ...;
CombinedConfiguration config = new CombinedConfiguration();
config.addConfiguration(defaultConfig);
config.addConfiguration(userConfig);
这取决于NodeCombiner
传递给CombinedConfiguration
class的构造函数。例如,如果使用 OverrideCombiner
添加到配置的第一个项目将优先于其他节点。如果调用 CombinedConfiguration
的默认构造函数,将使用 UnionCombiner
。
解决方案是使用OverrideCombiner,并且需要从高到低的优先级添加配置。
CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
config.addConfiguration(userConfig);
config.addConfiguration(defaultConfig);
将配置添加到 CombinedConfiguration(来自 Apache Commons 配置 2)时,如何指定一个配置覆盖另一个配置?
例如,假设我有一个默认配置和一个用户配置。如果我希望用户覆盖默认值,我该如何设置组合配置?
XMLConfiguration defaultConfig = ...;
XMLConfiguration userConfig = ...;
CombinedConfiguration config = new CombinedConfiguration();
config.addConfiguration(defaultConfig);
config.addConfiguration(userConfig);
这取决于NodeCombiner
传递给CombinedConfiguration
class的构造函数。例如,如果使用 OverrideCombiner
添加到配置的第一个项目将优先于其他节点。如果调用 CombinedConfiguration
的默认构造函数,将使用 UnionCombiner
。
解决方案是使用OverrideCombiner,并且需要从高到低的优先级添加配置。
CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
config.addConfiguration(userConfig);
config.addConfiguration(defaultConfig);