I have a main conf file which I load using apache common configuration class. I have a requirement where user can specify a conf file and values in those file will override the values in main conf.
Please suggest me how we can do that in apache common configuration class or any other open source class to achieve this.
Thanks in adv开发者_运维问答ance
I think you want something similar to the mechanism described here:
CompositeConfiguration config = new CompositeConfiguration();
config.addConfiguration(new PropertiesConfiguration("user.properties"));
config.addConfiguration(
new PropertiesConfiguration("application.properties"));
// user preferences have precedence over application preferences
Reference:
CompositeConfiguration
With cfg4j:
// Specify which files to load. Configuration from both files will be merged.
ConfigFilesProvider configFilesProvider = () -> Arrays.asList(new File("application.properties"), new File("otherConfig.properties"));
// Use local files as configuration store
ConfigurationSource source = new FilesConfigurationSource(configFilesProvider);
Then use it in a standard way to get properties out.
PropertiesConfiguration
has a method copy(Configuration c)
which copies the content of the specified configuration into this configuration. If the specified configuration contains a key that is also present in this configuration, the value of this key will be replaced by the new value.
精彩评论