Как загрузить несколько файлов конфигурации, используя общую конфигурацию apache (java)

У меня есть основной файл конфигурации, который я загружаю с помощью общего класса конфигурации apache. У меня есть требование, согласно которому пользователь может указать файл конфигурации, и значения в этом файле будут переопределять значения в основной конфигурации.

Пожалуйста, предложите мне, как мы можем сделать это в общем классе конфигурации apache или любом другом классе с открытым исходным кодом для достижения этой цели.

заранее спасибо


person shashuec    schedule 25.02.2011    source источник


Ответы (3)


Я думаю, вам нужно что-то похожее на механизм, описанный здесь:

CompositeConfiguration config = new CompositeConfiguration();
config.addConfiguration(new PropertiesConfiguration("user.properties"));
config.addConfiguration(
    new PropertiesConfiguration("application.properties"));
// user preferences have precedence over application preferences

Ссылка:

person Sean Patrick Floyd    schedule 25.02.2011
comment
Я создал файл loader.properties, состоящий из двух строк, include=a.properties и include=b.properties. Он по-прежнему включает в себя a.properties, но не b.properties. Я использовал PropertyConfiguration для загрузки файла loader.properties. Ты знаешь почему? - person Sujoy; 17.03.2015

С 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);

Затем используйте его стандартным способом для получения свойств.

person PanHrabia    schedule 14.07.2015

PropertiesConfiguration имеет метод copy(Configuration c), который копирует содержимое указанной конфигурации в эту конфигурацию. Если указанная конфигурация содержит ключ, который также присутствует в этой конфигурации, значение этого ключа будет заменено новым значением.

person Kirmann    schedule 29.07.2020