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
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.
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:
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.